2014-10-27 82 views
0

我试图创建一个VBA脚本,将整个工作簿中的所有数据复制为值粘贴,然后另存为新工作簿,从而删除所有公式。复制所有值VBA脚本失败

这里是我的代码:

Sub MakeAllVals() 
Dim wSheet As Worksheet 

For Each wSheet In Worksheets 
    With wSheet 
     .UsedRange.Copy 
     .PasteSpecial xlValues 
    End With 
Next wSheet 

Application.Dialogs(xlDialogSaveAs).Show 
End Sub 

我在.PasteSpecial xlValues命令得到一个运行时错误1004,但我不明白为什么。

我该如何实现将所有数据粘贴为值并保存为新工作簿的目标?

+0

可能重复的:http://stackoverflow.com/questions/20671795/how-to-remove-formulas-from-sheet-but-keep-their-calculated-values – 2014-10-27 12:20:18

回答

2

你只需要粘贴到一个范围在新的工作表。目前,您并未在新书中粘贴,而且您也没有在一个范围内粘贴。

Sub MakeAllVals() 
    Dim oldBook As Workbook, oldSheet As Worksheet 
    Dim newBook As Workbook, newSheet As Worksheet 

    Set oldBook = ThisWorkbook  ' Set to the formula workbook you want to copy from 
    Set newBook = Workbooks.Add  ' Make the new workbook you want only values in 

    For Each oldSheet In oldBook.Sheets ' Loop through all of the sheets in the formula book 
     Set newSheet = newBook.Sheets.Add ' Make a new sheet in the newbook to add the values to 

     newSheet.Name = oldSheet.Name & " Values" 
     oldSheet.UsedRange.Copy     
     newSheet.Range("A1").PasteSpecial xlValues ' Paste in a range on the new sheet as Values 
    Next oldSheet 

    Application.Dialogs(xlDialogSaveAs).Show ' Show Save As Dialog window 
End Sub 
2

你接近只需要UsedRange未来拉升至wSheet

Sub MakeAllVals() 
Dim wSheet As Worksheet 

For Each wSheet In ActiveWorkbook.Worksheets 
    With wSheet.UsedRange 
     .Copy 
     .PasteSpecial xlValues 
    End With 
Next wSheet 

Application.Dialogs(xlDialogSaveAs).Show 
End Sub