从链接地址复制工作簿并将其粘贴到范围地址中

问题描述 投票:0回答:1

我正在尝试编写代码,该代码将根据主工作簿中的链接地址从另一工作簿复制特定工作表的内容。然后,将其粘贴到我的主工作簿中的工作表范围中,该工作簿也作为范围地址提供。这必须在循环中执行,因为我想对存储在不同链接下的其他2个工作簿重复此操作。存储在不同链接下的所有这3个工作簿都具有名为“数据”的表,必须将其粘贴到我的主工作簿中。

这是我在执行此代码时始终打开的主要工作簿。在工作表“开始”中,该表指定了1)链接到应从中复制数据的工作簿(列A),2)工作表范围地址应将数据粘贴到此主工作簿中的列(列B)。] >

enter image description here

在我的代码中,除了将所有提供的链接中的所有3个工作簿的内容粘贴到'Sheet1'!A1中之外,所有其他方法都将起作用。我尝试对代码进行F8处理,看起来代码在B列中未正确循环。

Sub Copy_Paste()

Dim Ws_MainWS As Worksheet
Dim intFirstRow_Ws2 As Integer
Dim intLastCol_Ws2 As Integer
Dim ActiveWs As Variant
Dim Var_Ws2Link As Variant
Dim intListRow As Integer
Dim intListRow_Paste As Integer
Dim objTable As Excel.ListObject
Dim objRange As Excel.Range
Dim intLastRow_Ws1Tbl As Integer

Set Ws_MainWS = ThisWorkbook.Sheets("Start")
Set ActiveWs = ActiveWorkbook
Set objTable = Ws_MainWS.ListObjects("tblStart")

intLastRow_Ws1Tbl = Ws_MainWS.Cells(Rows.Count, 1).End(xlUp).row
intFirstRow_Ws2 = 1
Const ColumnStart As Integer = 1

On Error GoTo ErrorHandler

'Copy and Paste into provided sheet range address
    'Loop through Links to other workbooks
    For intListRow = 3 To intLastRow_Ws1Tbl
        Set Var_Ws2Link = Ws_MainWS.Cells(intListRow, 1)

            With objTable
                'Loop through pasting range addresses and paste
                For intListRow_Paste = 1 To .DataBodyRange.Rows.Count
                    Set objRange = Excel.Range(.DataBodyRange(intListRow_Paste, .ListColumns("Sheet Range address").Index).Value)
                         Workbooks.Open Var_Ws2Link, local:=True
                         intLastCol_Ws2 = Worksheets("Data").Cells(1, Columns.Count).End(xlToLeft).Column
                        With Worksheets("Data")
                            .Range(.Cells(intFirstRow_Ws2, ColumnStart), .Cells(.Rows.Count, intLastCol_Ws2)).Copy
                            objRange.PasteSpecial xlPasteValues
                            Application.CutCopyMode = False
                            Set objRange = Nothing
                            ActiveWorkbook.Close
                        End With

                    Exit For

                Next intListRow_Paste
            End With

            Set objTable = Nothing

    Next intListRow

MsgBox "Done"


Exit Sub
ErrorHandler:

Set objTable = Nothing

End Sub

为了遍历粘贴范围地址,我使用对象表。我将不胜感激!

我正在尝试编写代码,该代码将根据主工作簿中的链接地址从另一工作簿复制特定工作表的内容。然后,应将其粘贴到我的主表中的工作表范围中。

excel vba copy-paste
1个回答
0
投票

[如果我有一个像您一样的两列表,这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.