簡體   English   中英

將多個工作簿中的工作表復制到現有工作簿 - VBA

[英]copying sheets from multiple workbooks to existing workbook- VBA

我正在嘗試將 4 個不同工作簿中的 4 張復制到我所在的“主”工作簿中

下面的代碼只對一張紙做,但我想對所有 4 張紙做

另外,目前下面的代碼打開了源表,但我不想打開源表。 如果我從下面的文件路徑中刪除“.Open”然后它說下標超出范圍

謝謝

Sub Copysheets()

Dim source As Workbook
Dim Master As Workbook

Set source = Workbooks.Open("\\filepath\filename.xlsx")
Set Master = Workbooks.Open("\\filepath\filename.xlsm")

Dim sourcesheet As Worksheet

For Each sourcesheet In source.Sheets

sourcesheet.Copy After:=Master.Sheets(Master.Sheets.Count)
Next


End Sub

如果您有一項需要重復執行的任務,通常最好將該任務外包給子程序。

以下例程獲取 2 個參數,第一個是 master(要將工作表復制到其中的工作簿)和一個文件名(包含要打開和復制的文件的名稱)。 此復制例程不關心您的業務邏輯,它只是復制工作表:

Sub Copysheets(masterWB As Workbook, sourceWBName As String)
    Dim sourceWB As Workbook, sourceSheet As Worksheet
    Set sourceWB = Workbooks.Open("\\filepath\filename.xlsx")

    For Each sourceSheet In sourceWB.Sheets
        sourceSheet.Copy After:=masterWB.Sheets(masterWB.Sheets.Count)
    Next
    ' Don't forget to close the file afterwards:
    sourceWB.Close SaveChanges:=False
End Sub

然后你可以像這樣調用例程(這段代碼處理你的業務邏輯但不關心復制是如何完成的):

Sub CopySheetsFrom4Workbooks()
    Dim masterWB As Workbook
    Set masterWB = Workbooks.Open("\\filepath\filename.xlsm")
    
    Copysheets masterWB, "\\filepath\filename1.xlst"
    Copysheets masterWB, "\\filepath\filename2.xlst"
    Copysheets masterWB, "\\filepath\filename3.xlst"
    Copysheets masterWB, "\\filepath\filename4.xlst"

    masterWB.Save
End Sub

或者,例如,使用循環復制所有文件的工作表:

Sub CopyAllMyWorkbooks()
    Dim masterWB As Workbook
    Set masterWB = Workbooks.Open("\\filepath\filename.xlsm")
    
    Dim sourceFilename As String
    sourceFilename = Dir("\\filepath\filename*.xlst")
    Do While sourceFilename <> ""
        Copysheets masterWB, sourceFilename
        sourceFilename = Dir
    Loop
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM