首页 文章

VBA从特定工作表中的多个不同工作簿复制数据,然后将数据粘贴到当前工作簿中的特定工作表

提问于
浏览
4

我是VBA的新手,需要一些帮助来复制和粘贴不同的工作簿和循环表名称 .

我需要编写一个宏来复制100个工作簿中的数据(具有完全相同的格式和工作表名称),需要从两个名为“Summary”和“DB”的工作表复制到我当前工作簿的不同工作表 . 我在我当前的工作簿中设置了一个Control_Panel Sheet,其中包含复制源文件名称的名称,我需要将其转义为空白(或者删除没有复制源文件的表单,这样更好)

The Control_Panel Sheet Page looks like this:

这是我的代码:

Option Explicit

   Sub CopyData()
   Dim Address As String
   Dim CopyAddress As String
   Dim CopyRef1 As String
   Dim CopyRef2 As String
   Dim PasteSheet As String
   Dim Sheet1 As String
   Dim Sheet2 As String
   Dim A As Worksheet
   Dim i As Integer


   For i = 8 To 107 Step 1


     If IsEmpty(Cells(i, "D").Value) = False Then

     Sheet1 = "Summary"
     Sheet2 = "DB"

     Address = Cells(i, "D").Value
     PasteSheet = Cells(i, "B").Value


      CopyRef1 = "'" & Cells(4, "C") & "[& Address &]" & Sheet1 & "'!'" &       Range("B6:DO20")
    A = Worksheets("Sheet" & PasteSheet).Activate
    A.Range("C6:DP20").PasteSpecial

      CopyRef2 = "'" & Cells(4, "C") & "[& Address &]" & Sheet2 & "'!'" & Range("B7:LK631").Copy
      ActiveWorkbook.Worksheets(PasteSheet).Range("B23:LK647").PasteSpecial


     End If
    Next i
   End Sub

我每次尝试复制数据时都不想打开复制源文件,而且代码似乎无法识别源文件的位置 . 此外,当我尝试将数据粘贴到每个工作表时,我不确定是否识别“PasteSheet”名称 .

请帮我找到一种方法,从多张工作簿中复制两张名为“Summary”和“DB”的数据,而不打开它们,并将数据粘贴到不同的工作表,工作表名称从Cell B8循环到B107 .

非常感谢!

1 回答

  • 0

    很难看出你在尝试什么 . 尝试将工作簿和工作表命名为:

    Dim wb as workbook, dim ws as worksheet,
    Set wb = ThisWorkbook,
    Set ws = wb.Worksheets("thenameofyourworksheet")
    

    然后使用 ws.cells(4, "C") 等 . 我可以在您的代码中看到至少一个错误:

    你的两个变量 CopyRef1/2 都包含 Address 术语,它应该(实际上)是一个变量 . 因此, " " 的放置不正确或不足 .

    试试 ... & "[" & Address & "]"

    专业提示:使用标志!不要将变量命名为 Address 左右,将其命名为 sAddress 并标记您的类型 .

相关问题