将值粘贴到所有打开工作表(包括图片)的新工作表中

时间:2016-07-20 00:49:43

标签: excel vba excel-vba

我正在尝试创建一个没有公式的所有活动工作簿(甚至是非宏启用的工作簿)的重命名副本,可能是通过粘贴值而不修改图像。我正在使用Excel 2007。

我的过程理想情况是:

1)创建一个do,同时有xls文件循环将所有xls文件转换为xlsm。一个可能的添加是存储的数组A)工作表名称B)其选项卡名称及其状态

2)为每个或for循环运行一个自动粘贴所有活动工作表的值,包括那些带有图形或其他图像的文本,这些文档具有相同的名称,并且最后添加了少量添加。

3)将包含值的新命名文件转换为xls。

我尝试这样做时遇到的一个问题与链接有关。初始工作表的公式包含不会自动更新的链接。当我这样做时,原始工作表中带有链接引用的公式往往会被破坏。

以下是我为粘贴值找到的一般宏:

Sub test()
Dim MyNames As Range, MyNewSheet As Range

    Set MyNames = Range("R5").CurrentRegion ' load contigeous range into variable
    For Each MyNewSheet In MyNames.Cells    ' loop through cell children of range variable
        Sheets.Add.Name = MyNewSheet.Value
    Next MyNewSheet
    MyNames.Worksheet.Select                ' move selection to original sheet
End Sub

1 个答案:

答案 0 :(得分:0)

我认为这就是你所要求的:

Sub test()

Dim wb As Workbook
Dim ws As Worksheet
Dim counter As Integer
Dim filePath As String

Set wb = ActiveWorkbook
countet = 1

filePath = "c:/" 'Enter your destination folder here

For Each ws In wb.Sheets
    Sheets("Sheet1").Copy
    With ActiveSheet.UsedRange
        .Value = .Value
    End With
    ActiveWorkbook.SaveAs filePath & counter & ".xlsx", FileFormat:=51
    counter = counter + 1
Next ws
End Sub

这主要取自here

计数器有点破解,以确保文件不会全部保存为相同的名称并相互覆盖。也许有一种更合适的方法可以解决这个问题。