【问题标题】:Unable to open multiple workbook and append with data from an excel sheet using VBA code无法使用 VBA 代码打开多个工作簿并附加 Excel 工作表中的数据
【发布时间】:2019-03-14 18:54:16
【问题描述】:

我有一个 Excel 工作表,其中一列中包含 Excel 工作簿列表,另一列中包含相应数据。我希望能够打开每个工作簿并仅用相应的数据填充特定列。目前,我的代码会打开每个工作簿并在其下方附加其他工作簿的数据。

我的代码:

Sub Workbook_Open()
Dim r1 As Range, r2 As Range, N As Long, r As Range, x As Range

Workbooks.Open "C:\Users\HP\Documents\test\script.xlsx"

For Each r In Range("A1:A3")
    With r

        Workbooks.Open r
        Set Rng = Sheets("Sheet1").Range("B1:B3")
        For Each cell In Rng
        With cell

        Set r2 = Sheets("Sheet1").Range("Y3:Y3")

    Rng.Copy r2
    End With
        Next cell
    End With

Next r

End Sub

您的意见将不胜感激。

【问题讨论】:

  • 您要复制什么以及复制到哪里?
  • 您可能需要指定给定工作表所在的工作簿。
  • 您有一个With 块,但您从未真正使用它。如果您在此处使用With 块,我认为这可能是您正在打开的工作簿。
  • 还要阅读代码缩进!
  • @SJR 例如,打开 A 列中的第一个文件,并在单元格 B2 和 C2 中填充数据。对 A 列中的每个文件重复相同的操作,并在其旁边的单元格中填充数据

标签: excel vba excel-formula worksheet


【解决方案1】:

我不太明白您在复制什么,但我假设您要打开主文件 A 列中的每个文件,从该文件中提取一些单元格并将其放在 A 列右侧的单元格中。这个转移了几个单元格,因此希望您可以解决如何修改您的需求,或者如果没有,请返回。

Sub Workbook_Open()

Dim r1 As Range, rng As Range, N As Long, r As Range, x As Range, wbMaster As Workbook, wb As Workbook

Set wbMaster = Workbooks.Open("C:\Users\HP\Documents\test\script.xlsx")

For Each r In wbMaster.Sheets(1).Range("A1:A3")
    Set wb = Workbooks.Open(r)
    wb.Sheets("Sheet1").Range("B1").value=r.Offset(, 1).Value  'this fills B1 of the workbook opened with B of the master file
    wb.close false
Next r

End Sub

【讨论】:

  • 我已尝试调整您共享的代码,但仍然无法获得输出。参考您的代码的注释部分,这就是我希望实现的'这用主文件的 B1 填充打开的工作簿的 col B。谢谢
  • 啊,反过来了?所以你有一个文件 X 中的文件名列表,你打开文件 Y,你想把 X 的 B1(主文件)放到文件 Y 的 B1 中?对吗?
  • 是的,没错。您也可以从这个角度查看它,在 A 列中列出的每个文件上工作的每个人的用户名是 B 列中的用户名。所以,我想打开每个文件并填充列,例如,每个文件的 Y 对应的用户名。
  • 以上代码已修改。你还没有明确说明去哪里,但希望你明白。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多