【发布时间】:2016-02-01 23:23:05
【问题描述】:
我正在尝试将工作簿对象添加到工作簿数组中 该数组是在单独的模块中创建的公共类型
Option Explicit
Public w() As Workbook
Public i As Integer
然后我在工作表中存储的子程序中有以下过程
Sub test_addwbobjects()
ReDim Preserve w(2)
Application.Workbooks("Quick analysis - Moneycontrol.xlsx").Activate
Set w(i) = ActiveWorkbook
'Set w(i) = Application.Workbooks("Quick analysis - Moneycontrol.xlsx")
i = i + 1
'ActiveSheet.Range("b2") = w(0).Sheets("CF analysis").Range("b2")
'ActiveSheet.Cells(1, 1) = w(i).Sheets("CF analysis").Range("b2")
'ActiveSheet.Range("b2") = w(1).Sheets("CF analysis").Range("b5")
End Sub
上下文: 工作簿“快速分析 - Moneycontrol.xlsx”包含公司的财务模型。我希望能够比较多家公司的财务信息,因此我想在每次将公司的财务数据粘贴到“快速分析 - Moneycontrol.xlsx”工作簿时创建一个工作簿对象
我目前遇到下标超出范围错误。
谁能帮我解决这个问题?
谢谢
【问题讨论】:
-
快速分析 - Moneycontrol.xlsx 已经打开了吗?
-
这似乎适得其反。您的评论行似乎依赖于一个非常具体的工作表名称。使用工作簿名称的变体数组并将引用的工作簿封装在With ... End With statement 中可能会更好。如果没有更广泛地了解您要完成的工作,就很难提供更多。 (提示 - 在将值或对象分配给它之前,您必须 ReDim w 数组)
-
是的,快速分析 - Moneycontrol.xlsx 已打开。
-
谢谢,您的提示已经奏效。所以我们在分配任何东西之前就知道数组大小了吗?
-
这里是循环工作簿的链接,Loop through a Folder of Workbooks 以及一个简短的剪辑..Loop through a folder of workbooks,copy and paste data