我正在尝试编写代码,该代码将根据主工作簿中的链接地址从另一工作簿复制特定工作表的内容。然后,将其粘贴到我的主工作簿中的工作表范围中,该工作簿也作为范围地址提供。这必须在循环中执行,因为我想对存储在不同链接下的其他2个工作簿重复此操作。存储在不同链接下的所有这3个工作簿都具有名为“数据”的表,必须将其粘贴到我的主工作簿中。
这是我在执行此代码时始终打开的主要工作簿。在工作表“开始”中,该表指定了1)链接到应从中复制数据的工作簿(列A),2)工作表范围地址应将数据粘贴到此主工作簿中的列(列B)。] >
在我的代码中,除了将所有提供的链接中的所有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
为了遍历粘贴范围地址,我使用对象表。我将不胜感激!
我正在尝试编写代码,该代码将根据主工作簿中的链接地址从另一工作簿复制特定工作表的内容。然后,应将其粘贴到我的主表中的工作表范围中。
[如果我有一个像您一样的两列表,这对我有用。