2017-10-13 52 views
0

我正在構建一個包含將用作表單的內容控件的Word文檔。下拉列表將來自工作簿,並將根據所做的選擇進行動態調整。VBA Word - 如何在文檔打開時存儲數組或字典或coll

而不是每次重新訪問工作簿(並放慢速度),我試圖在數組和字典中存儲必要的信息,以便在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

您公共變量只是移動到一個標準模塊(例如你的子test駐留在模塊)的一切都將正常工作。