如何優化宏

如何優化宏

每年我都會有一個新的年度 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. 對於兩個文件中具有相同名稱的所有工作表
  2. 尋找參考所在的儲存格
  3. 將引用從來源檔案複製到相同位置的目標文件

答案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

相關內容