【问题标题】:VBA loop through workbooks + copy&pasteVBA循环工作簿+复制粘贴
【发布时间】:2018-01-26 19:04:14
【问题描述】:

我想从不同的工作簿(具有相同的结构)中获取数据并创建一个循环来复制和粘贴在活动工作簿中检索到的数据。我试过了,但它不起作用。

Sub loopMacro()
Dim Wb1 As Workbook, Wb2 As Workbook, Wb3 As Workbook
Dim MainBook As Workbook

'Open all workbooks:
Set Wb1 = Workbooks.Open("D:\VBA\file1.xlsx")
Set Wb2 = Workbooks.Open("D:\VBA\file2.xlsx")
Set Wb3 = Workbooks.Open("D:\VBA\file3.xlsx")
Set MainBook = ThisWorkbook

For i = 1 To 3
        For j = A To C
            WB(i).Sheets("sheet1").Range("E4").Copy
            MainBook.Sheets("DATA").Range(j & "1").PasteSpecial
            WB(i).Sheets("sheet1").Range("E5").Copy
            MainBook.Sheets("DATA").Range(j & "2").PasteSpecial
        Next j
Next i

MainBook.Save
MainBook.Close End Sub

基本上,宏应该从工作表 1 中获取数据 - Wb1、Wb2、Wb3... 的单元格 E4 和 E5 并在活动工作簿(单元格 A1 和 A2)中打印 Wb1 的数据,在单元格中打印 Wb2 的数据B1 和 B2,单元格 C1 和 C2 中 Wb3 的数据。 有人可以帮忙吗?

【问题讨论】:

    标签: excel vba loops copy-paste


    【解决方案1】:

    您的问题是 WB(i) 不会导致 Wb1、Wb2 等。

    将for i 替换为

    For Each wb In Array(Wb1, Wb2, Wb3)
    

    然后是所有wb(i) 和wb

    【讨论】:

    • 非常感谢! :) 细胞的循环怎么样?想法是将复制的数据写入范围 A1:C2...
    • A 到 C 的意思是“从 A (=0) 到 C (also = 0) 的值”。改用 Cells(row, col)
    • 谢谢!小问题...现在宏正在打开第一个工作簿,在正确的位置复制和粘贴,但随后它打开第二个工作簿并用新的值覆盖以前的值,依此类推...它不会覆盖而是打印 A 列中的第一个值,B 列中的第二个值和 C 列中的最后一个值...
    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多