【问题标题】:How to create a workbook array dynamically in VBA如何在 VBA 中动态创建工作簿数组
【发布时间】: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

标签: excel vba


【解决方案1】:

也许这会有所帮助:

Public w As Collection

Sub Test_addWBObject()

    Set w = New Collection

    w.Add Item:=Workbooks("Quick analysis - Moneycontrol.xlsx"), _
          Key:="MyUniqueKeyForThisWorkbook"

    'Can use collection as this:
    ThisWorkbook.Worksheets("Sheet1").Range("A1") = w(1).Worksheets("Sheet1").Range("C2")

    'or this
    ThisWorkbook.Worksheets("Sheet1").Range("A1") = w("MyUniqueKeyForThisWorkbook").Worksheets("Sheet1").Range("C2")

    'or this
    Dim wrkBk As Variant
    For Each wrkBk In w
         ThisWorkbook.Worksheets("Sheet1").Range("A1") = wrkBk.Worksheets("Sheet1").Range("C2")
    Next wrkBk

    'or this
    Dim x As Long
    For x = 1 To w.Count
        ThisWorkbook.Worksheets("Sheet1").Range("A1") = w(x).Worksheets("Sheet1").Range("C2")
    Next x

End Sub

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多