![如何優化宏](https://rvso.com/image/1641917/%E5%A6%82%E4%BD%95%E5%84%AA%E5%8C%96%E5%AE%8F.png)
每年我都會有一個新的年度 Excel 文件,其結構與前一年相同。去年,我定義了必須從該 Excel 檔案的所有工作表中讀取的行和列,並將計算結果傳回相同檔案。
在新的一年我需要重複整個過程。有沒有辦法將連結和公式從上一年移動到下一年,而無需手動重新綁定資料?
這是錄製的巨集:
Sub NewYearData()
' NewYearData Makronaredba
Windows("PreviousYear.xlsm").Activate
Sheets("1.A.1.a.ii Liquid Fuels").Select
Range("C16:AH18").Select
Selection.Copy
Application.WindowState = xlNormal
Windows("CurrentYear2.xlsx").Activate
Range("C16").Select
ActiveSheet.Paste Link:=True
ActiveSheet.Paste
Windows("PreviousYear.xlsm").Activate
Sheets("1.A.1.a.ii Gaseous Fuels Gaseo").Select
Range("C16:AH18").Select
Application.CutCopyMode = False
Selection.Copy
Windows("CurrentYear2.xlsx").Activate
Sheets("1.A.1.a.ii Gaseous Fuels Gaseo").Select
Range("C16:AH18").Select
ActiveSheet.Paste
End Sub
如何使其適用於所有床單?
- 對於兩個文件中具有相同名稱的所有工作表
- 尋找參考所在的儲存格
- 將引用從來源檔案複製到相同位置的目標文件
答案1
這假設我們有相同的工作表(同名) 在兩個都作業簿。我們定義一些物件並使用循環:
Sub NewYearData()
Dim wb1 As Workbook, wb2 As Workbook
Dim r1 As Range, r2 As Range
Dim addy As String, sh As Worksheet
Dim shName As String
Set wb1 = Workbooks("PreviousYear.xlsm")
Set wb2 = Workbooks("CurrentYear2.xlsx")
addy = "C16:AH18"
For Each sh In wb1.Sheets
shName = sh.Name
Set r1 = sh.Range(addy)
Set r2 = wb2.Sheets(shName).Range(addy)
r1.Copy r2
Next sh
End Sub