我有許多Excel工作簿,其中包含25個以上工作表,每個工作表包含範圍爲1:500的20列數據(或部分爲1:1000例)。我經常負責更新輸入新數據以進行新計算的「模板」。我希望能夠將舊工作表中的現有數據輕鬆地粘貼到具有新格式的工作表中,同時保留新模板中的任何新格式/公式。VBA:如何將兩個工作簿之間的副本/粘貼擴展到兩個工作簿中的所有工作簿
我使用VBA打開我想複製並粘貼到新模板工作表的工作表。到目前爲止,我的代碼將複製要複製的工作簿的第一個工作表(S1)中的所有內容,並將其粘貼到目標工作簿的第一個工作表(S1)上。
我想擴展此過程以遍歷所有活動工作表(現在對工作簿中的每個工作表執行任何操作)。我以前能夠用不同的代碼做到這一點,但它刪除了行503和行506中我需要粘貼的公式。我可以做一個pastespecial並跳過空單元格嗎?我是新來的。
這裏是我當前的代碼:
Sub CopyWS1()
Dim x As Workbook
Dim y As Workbook
Set x = Workbooks("Ch00 Avoid.xlsx")
Set y = Workbooks("Ch00 Avoid1.xlsx")
Dim LastRow As Long
Dim NextRow As Long
x.Worksheets("S1").Activate
Range("A65536").Select
ActiveCell.End(xlUp).Select
LastRow = ActiveCell.Row
Range("A2:T" & LastRow).Copy y.Worksheets("s1").Range("A1:A500")
Application.CutCopyMode = False
Range("A1").Select
End Sub
我相信,我需要爲整個工作表擴展,以使用類似下面的代碼,但我不知道如何通過迭代張因爲我在上面的代碼中特別引用了兩張紙。
Sub WorksheetLoop2()
' Declare Current as a worksheet object variable.
Dim Current As Worksheet
' Loop through all of the worksheets in the active workbook.
For Each Current In Worksheets
' Insert your code here.
' This line displays the worksheet name in a message box.
MsgBox Current.Name
Next
End Sub
我想,(直到我的指數爲25或某事做出一個新的變量和運行一個for循環)作爲替代,但同樣我也許能解決這個問題作爲一個for循環跨工作表的索引,我不知道如何將我的複製/粘貼從特定的表單指向另一個表單。我對這一點很陌生,只有Python/Java的半限制經驗。這些VBA技能會在日常工作中大大受益。
兩個文件中的問題: Ch00 Avoid
「我不知道如何從一個特定的表到另一個工作表指向我的複製/粘貼」 ---你爲什麼不試着去'表(I).Range( 「A2:T」&LastRow).Copy Sheets(j).Range(「A1」)'其中i和j是您希望使用的工作表的索引。 –
此外,它可能有助於避免使用['.Select'](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros),在非常至少它會幫助你更好地理解如何處理數據。你也可以看起來像「VBA循環通過工作表」 – BruceWayne
我完全失去了。每次我修改我的代碼時,我都失去了我所擁有的功能。我應該詳細說明,迄今爲止我所獲得的任何功能都是由於運氣不佳和雜亂無章地將別人的代碼拼湊在一起。 如果我添加 表(i).Range(「A2:T」&LastRow).Copy表(j).Range(「A1」) 並指定我想要的範圍(索引1到索引25)發生。我想連續激活我的第一個工作簿中的每個工作表,從1-500行和A-T列複製數據,並將這些數據複製到新工作簿中的相應工作表中。 – RigStackhorse