VBA Word-如何在文档打开时存储数组、dict或coll

VBA Word-如何在文档打开时存储数组、dict或coll,vba,excel,ms-word,Vba,Excel,Ms Word,我正在构建一个word文档,其中包含将用作表单的内容控件。下拉列表将来自工作簿,并根据所做的选择进行动态调整 我不想每次都重新访问工作簿(这样会减慢速度),而是尝试将必要的信息存储在数组和字典中,以便在整个表单填写过程中使用Document_Open()。我不需要(也不希望)用户关闭文档后存储的数组/dict 我曾尝试在函数之外声明一个公共dict,但没有成功(或者我做得不对?)。有人能给我指一下正确的方向吗 多谢各位 Public dict As Object Public Sub Docum

我正在构建一个word文档,其中包含将用作表单的内容控件。下拉列表将来自工作簿,并根据所做的选择进行动态调整

我不想每次都重新访问工作簿(这样会减慢速度),而是尝试将必要的信息存储在数组和字典中,以便在整个表单填写过程中使用Document_Open()。我不需要(也不希望)用户关闭文档后存储的数组/dict

我曾尝试在函数之外声明一个公共dict,但没有成功(或者我做得不对?)。有人能给我指一下正确的方向吗

多谢各位

Public dict As Object
Public Sub Document_Open()

    Set dict = CreateObject("Scripting.Dictionary")

    Dim xlApp As Object
    Dim xlWB As Object
    Dim xlWS As Object
    Dim cRows As Integer
    Dim i As Integer

    Set xlApp = CreateObject("Excel.Application")
    Set xlWB = xlApp.Workbooks.Open("O:\[..]\Library.xlsx")
    Set xlWS = xlWB.Worksheets(1)
    cRows = 21

        For i = 1 To cRows
            dict.Add xlWS.Range("C2").Cells(i, 1).Value, xlWS.Range("C2").Cells(i, 2).Value
        Next i

    Set xlWS = Nothing
    Set xlWB = Nothing
    xlApp.Quit
    Set xlApp = Nothing

End Sub
稍后推出

Sub test()

    Debug.Print dict("random key")

End Sub

只需将您的公共变量移动到标准模块(例如,您的子
测试
所在的模块)中,一切都会正常工作