首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VBA中动态创建工作簿数组

如何在VBA中动态创建工作簿数组
EN

Stack Overflow用户
提问于 2016-01-31 12:25:47
回答 1查看 929关注 0票数 1

我试图将工作簿对象添加到一个工作簿数组中,该数组的类型为public,在一个单独的模块中创建。

代码语言:javascript
复制
Option Explicit
Public w() As Workbook
Public i As Integer

然后,我将下面的过程存储在工作表中的一个子程序中。

代码语言:javascript
复制
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”工作簿中时,我都希望创建一个工作簿对象。

我目前正在得到下标的范围外的错误。

有人能帮我吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-01 15:23:05

也许这会有帮助:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35113809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档