【问题标题】:Workbook Variable overwritten without call无需调用即可覆盖工作簿变量
【发布时间】:2018-03-05 20:56:02
【问题描述】:

我目前正在循环浏览 Excel 中的工作表并将键值与另一个工作表链接,然后再将两者中的数据输入到我当前的工作簿中。 但是,在 VB 中打开第三个工作簿时,包含第二个工作簿的变量将被覆盖以包含第三个工作簿。

Set CheckWorkbook = Workbooks.Open("Checkworkbook.xlsx")

For Each File In Folder.Files
Set DataWorkbook = Workbooks.Open(File)
For i = 2 To NumRows
CurrentTransaction = DataWorkbook.Sheets(1).Cells(i, 7).Value
    For j = 2 To CheckNumRows
        CheckTransaction = CheckWorkbook.Sheets(1).Cells(j, 2).Value ' Reads Data from DataWorkbook instead of CheckWorkbook
        If CurrentTransaction = CheckTransaction Then
        'Process Data
        End If
    Next j
Next i
Next

有人见过类似的吗?还是excel只能用两个工作簿来蠕虫? 在 Excel 2016 中运行

【问题讨论】:

  • Checkworkbook.xlsx 是 Folder.Files 中的文件之一吗?通常,名称检查用于跳过类似的情况。
  • 抱歉,我应该澄清一下,它们位于不同驱动器上的不同文件夹中。 Folder.files 在网络驱动器上(并且在其他项目中工作正常)
  • 我有一个适用于 >20 个工作簿的例程。在您的For i = ... 行上放置一个断点,并在每次迭代期间准确查看 DataWorkbook 指向的内容。然后检查Folder 集合以确保您指向正确的文件夹。
  • 文件夹选择正确并指向第一个文件 31 并遍历它们(当月的每日数据转储),但是 Checkworkbook 也被分配给每日文件而无需任何调用应保留为 Checkworkbook.xlsx
  • 我不明白。您打开一个工作簿 (Checkworkbook) 并将其存储在一个变量中,然后循环遍历一个文件夹,在每次迭代中打开一个文件并将其分配给 DataWorkbook。什么被覆盖了?

标签: vba excel


【解决方案1】:

将代码移动到其中一个数据文件中作为一种解决方法,这不是一个真正的答案,而是一种解决方法。

完成后将继续测试以找到原始问题的根源并更新

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-08
    • 2020-01-06
    • 2019-11-19
    • 2017-11-17
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多