2017-10-13 1 views
0

Ich bin ein Word-Dokument mit Inhaltskontrollen, die als ein Formular verwendet werden. Die Dropdown-Listen stammen aus einer Arbeitsmappe und werden abhängig von den getroffenen Entscheidungen dynamisch angepasst.VBA Word - Wie array oder dict oder coll zu speichern, während das Dokument geöffnet ist

Anstatt jedesmal auf die Arbeitsmappe zuzugreifen (und die Vorgänge zu verlangsamen), versuche ich, die notwendigen Informationen in Arrays und Wörterbüchern zu speichern, die während des Ausfüllens des Formulars bei Document_Open() verwendet werden. Ich brauche (und will nicht) die Arrays/dict gespeichert, nachdem der Benutzer das Dokument schließt.

Ich habe versucht, ein öffentliches Diktat außerhalb der Funktion zu deklarieren, kein Erfolg (oder mache ich es falsch?). Kann mir jemand in die richtige Richtung zeigen?

danke

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 

später gestartet werden

Sub test() 

    Debug.Print dict("random key") 

End Sub 

Antwort

1

einfach Ihre öffentliche Variable zu einem Standardmodul bewegen (beispielsweise das Modul, das Sie Unter test wohnen in) wird ein alles gut funktionieren.

Verwandte Themen