簡體   English   中英

將工作簿鏈接更改為新工作簿 VBA [Excel]

[英]Change Workbook links to New WorkBook VBA [Excel]

我正在創建一個宏,它創建一個新工作簿並復制多個工作表。 假設我們有以下工作表:

Names
Times
Lists

在原始工作簿上按下宏時,我希望復制這些工作表,我目前做得很好。 但是,我不明白如何使這些工作表中的鏈接引用新工作簿而不是原始工作簿。

代碼嘗試:

    Sub WorkBook_Test()
        Dim wbO As Workbook, wbN As Workbook
    
        Set wbO = ActiveWorkbook
        Set wbN = Workbooks.Add
    
        wbO.Sheets("Names").Copy wbN.Sheets(1)
        wbO.Sheets("Times").Copy wbN.Sheets(2)
        wbO.Sheets("Lists").Copy wbN.Sheets(3)
    
End Sub

問題:

例如,新工作簿上的 Lists 表仍然引用 =[OrginalFile.xlsm]Names.B27。 但是,我希望所有鏈接都引用當前工作簿而不是原始文件。

注意:當我希望鏈接僅引用當前文件工作表時,我對公式有一些非常深入的 if 語句,因此有多個引用都引用原始文件。

遍歷LinkSources並使用ChangeLink方法。

Option Explicit

Sub WorkBook_Test()

    Dim wbO As Workbook, wbN As Workbook

    Set wbO = ActiveWorkbook
    Set wbN = Workbooks.Add

    wbO.Sheets("Names").Copy wbN.Sheets(1)
    wbO.Sheets("Times").Copy wbN.Sheets(2)
    wbO.Sheets("Lists").Copy wbN.Sheets(3)
    
    Dim ar, n As Integer
    With wbN
        ar = .LinkSources(1) 'xlExcelLinks
        If Not IsEmpty(ar) Then
            For n = 1 To UBound(ar)
                .ChangeLink Name:=ar(n), _
                    NewName:=.Name, Type:=xlExcelLinks
                'Debug.Print n, ar(n)
            Next
        End If
    End With

End Sub

暫無
暫無

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

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