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

时间:2017-10-13 13:07:22

标签: vba excel-vba word-vba excel

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

我不是每次都重新访问工作簿(并减慢速度),而是尝试将必要的信息存储在数组和字典中,以便在Document_Open()中填充表单时使用。在用户关闭文档后,我不需要(并且不想要)存储的数组/字典。

我试过在函数之外声明一个公共字典,没有成功(或者我做错了?)。有人能指出我正确的方向。

谢谢

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

1 个答案:

答案 0 :(得分:1)

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