[英]VBA paste sheets from array to new workbook as values
我正在嘗試編寫這個小宏來復制存儲在數組中的幾張工作表,並將它們作為值粘貼到新工作簿中,以保持工作表的名稱和順序。 我找到了一些解決方案,但與我的情況不完全匹配。
Sub tryit()
Dim wo As Workbook, wn As Workbook
Dim so As Worksheet, sn As Worksheet
Dim MyArray As Variant
MyArray = Array("ar1", "ar2", "ar3")
Set wo = ActiveWorkbook
Set wn = Workbooks.Add
For Each so In wo.Worksheets(MyArray)
Set sn = wn.Worksheets.Add
sn.Name = so.Name
so.Cells.Copy
sn.[A1].PasteSpecial xlPasteValues
sn.[A1].PasteSpecial xlPasteFormats
Next so
wn.SaveAs Filename:=ThisWorkbook.Path & "\" & "Report"
wn.Close savechanges:=True
End Sub
結果問題:
我已經看到了一些使用Lbound和Ubound函數的解決方案,但是我不確定如何將它們與循環結合使用,我想它將使代碼更簡潔?
提前致謝。
我認為這可以解決您的問題。 我不確定刪除最后一張紙的末尾部分。 我不知道您想如何處理:
Sub tryit()
Dim wo As Workbook, wn As Workbook
Dim so As Worksheet
Dim MyArray As Variant
MyArray = Array("ar1", "ar2", "ar3")
Set wo = ActiveWorkbook
Set wn = Workbooks.Add
'copy all worksheets at once
wo.Worksheets(MyArray).Copy before:=wn.Worksheets(1)
For Each so In wn.Worksheets
'same effect as PasteSpecial>Values
so.UsedRange.Value = so.UsedRange.Value
Next so
Application.DisplayAlerts = False
'delete last sheet, the default sheet in original workbook
'if there was more than one, need to adjust
wn.Worksheets(wn.Worksheets.Count).Delete
Application.DisplayAlerts = True
wn.SaveAs Filename:=ThisWorkbook.Path & "\" & "Report"
wn.Close savechanges:=True
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.