Freigeben über


Speichern von Werten beim Beenden eines Makros

Wenn ein Makro endet, werden die in seinen Variablen enthaltenen Werte nicht automatisch auf einem Datenträger gespeichert. Soll ein Wert erhalten bleiben, muss dieser außerhalb des Makros gespeichert werden, bevor die Ausführung des Makros abgeschlossen ist. In diesem Thema werden fünf Speicherorte beschrieben, an denen Makrowerte einfach gespeichert und von denen sie abgerufen werden können.

Dokumentvariablen

Mit Dokumentvariablen können Sie Werte als Teil eines Dokuments oder einer Vorlage speichern. Beispielsweise können Sie Makrowerte in dem Dokument oder der Vorlage speichern, in dem sich das Makro befindet. Sie können variablen zu einem Dokument oder einer Vorlage hinzufügen, indem Sie die Add-Methode der Variables-Auflistung verwenden. Im folgenden Beispiel wird eine Dokumentvariable mithilfe der ActiveDocument-Eigenschaft am selben Speicherort wie das makro gespeichert, das ausgeführt wird (Dokument oder Vorlage).

Sub AddDocumentVariable() 
 ActiveDocument.Variables.Add Name:="Age", Value:=12 
End Sub

Im folgenden Beispiel wird die Value-Eigenschaft mit einem Variable-Objekt verwendet, um den Wert einer Dokumentvariablen zurückzugeben.

Sub UseDocumentVariable() 
 Dim intAge As Integer 
 intAge = ActiveDocument.Variables("Age").Value 
End Sub

Hinweise

Verwenden Sie das Feld DOCVARIABLE, um eine Dokumentvariable in ein Dokument einzufügen.

Document-Eigenschaften

Wie mit Dokumentvariablen können Werte auch mithilfe von Dokumenteigenschaften als Teil eines Dokuments oder einer Vorlage gespeichert werden. Dokumenteigenschaften können im Dialogfeld Eigenschaften angezeigt werden.

Das Word Objektmodell unterteilt Dokumenteigenschaften in zwei Gruppen: integriert und benutzerdefiniert. Benutzerdefinierte Dokumenteigenschaften sind die Eigenschaften, die im Dialogfeld Eigenschaften auf der Registerkarte Anpassen angezeigt werden. Als integrierte Dokumenteigenschaften gelten die Eigenschaften auf allen Registerkarten im Dialogfeld Eigenschaften mit Ausnahme der Registerkarte Anpassen.

Verwenden Sie für den Zugriff auf integrierte Eigenschaften die BuiltInDocumentProperties-Eigenschaft , um eine DocumentProperties-Auflistung zurückzugeben, die die integrierten Dokumenteigenschaften enthält. Verwenden Sie die CustomDocumentProperties-Eigenschaft eines Document-Objekts oder eines Template-Objekts , um eine DocumentProperties-Auflistung zurückzugeben, die die benutzerdefinierten Dokumenteigenschaften enthält. Im folgenden Beispiel wird eine benutzerdefinierte Dokumenteigenschaft mit dem Namen "YourName" am selben Speicherort wie das makro erstellt, das ausgeführt wird (Dokument oder Vorlage).

Sub AddCustomDocumentProperties() 
 ActiveDocument.CustomDocumentProperties.Add Name:="YourName", _ 
 LinkToContent:=False, Value:="Joe", Type:=msoPropertyTypeString 
End Sub

Integrierte Dokumenteigenschaften können nicht der DocumentProperties-Auflistung hinzugefügt werden, die von der BuiltInDocumentProperties-Eigenschaft eines Document- oder Template-Objekts zurückgegeben wird. Sie können jedoch den Inhalt einer integrierten Dokumenteigenschaft abrufen oder den Wert einer integrierten Dokumenteigenschaft mit Lese-/Schreibzugriff ändern.

Verwenden Sie das Feld DOCPROPERTY, um Dokumenteigenschaften in ein Dokument einzufügen.

AutoText-Einträge

AutoText-Einträge können verwendet werden, um Informationen in einer Vorlage zu speichern. Im Gegensatz zu einer Dokumentvariablen oder -eigenschaft können AutoText-Einträge Elemente enthalten, die über Makrovariablen hinausgehen, z. B. formatierten Text oder eine Grafik. Verwenden Sie die Add-Methode mit der AutoTextEntries-Auflistung , um einen neuen AutoText-Eintrag zu erstellen. Im folgenden Beispiel wird ein AutoText-Eintrag mit dem Namen "MyText" erstellt, der den Inhalt der Auswahl enthält. Wenn die folgende Anweisung Teil eines Vorlagenmakros ist, wird der neue AutoText-Eintrag in der Vorlage gespeichert. Andernfalls wird der AutoText-Eintrag in der Vorlage gespeichert, die an das Dokument angefügt ist, in dem sich die Anweisung befindet.

Sub AddAutoTextEntry() 
 ActiveDocument.AttachedTemplate.AutoTextEntries.Add Name:="MyText", _ 
 Range:=Selection.Range 
End Sub

Verwenden Sie die Value-Eigenschaft mit einem AutoTextEntry-Objekt , um den Inhalt eines AutoText-Eintragsobjekts abzurufen.

Einstellungsdateien

Mithilfe der PrivateProfileString-Eigenschaft des System-Objekts können Sie Informationen aus einer Einstellungsdatei festlegen und abrufen. Die Struktur einer Windows-Einstellungsdatei ist identisch mit der Windows 3.1-WIN.INI-Datei. Im folgenden Beispiel wird der DocNum-Schlüssel im Abschnitt DocTracker in der Macro.ini-Datei auf 1 festgelegt.

Sub MacroSystemFile() 
 System.PrivateProfileString( _ 
 FileName:="C:\My Documents\Macro.ini", _ 
 Section:="DocTracker", Key:="DocNum") = 1 
End Sub

Nach dem Ausführen der oben stehenden Anweisung enthält die Datei Macro.ini den folgenden Text.

[DocTracker] 
DocNum=1

Die PrivateProfileString-Eigenschaft weist drei Argumente auf: FileName, Section und Key. Das Argument FileName wird verwendet, um einen Einstellungsdateipfad und Dateinamen anzugeben. Das Argument Section gibt den Abschnittsnamen an, der zwischen Klammern vor den zugeordneten Schlüsseln angezeigt wird (schließen Sie die Klammern nicht mit dem Abschnittsnamen ein). Das Argument Key gibt den Schlüsselnamen an, gefolgt von einem Gleichheitszeichen (=) und der Einstellung.

Verwenden Sie dieselbe PrivateProfileString-Eigenschaft , um eine Einstellung aus einer Einstellungsdatei abzurufen. Im folgenden Beispiel wird die DocNum-Einstellung im Abschnitt DocTracker in der Macro.ini-Datei abgerufen.

Sub GetSystemFileInfo() 
 Dim intDocNum As Integer 
 intDocNum = System.PrivateProfileString( _ 
 FileName:="C:\My Documents\Macro.ini", _ 
 Section:="DocTracker", Key:="DocNum") 
 MsgBox "DocNum is " & intDocNum 
End Sub

Windows-Registrierung

Mithilfe der PrivateProfileString-Eigenschaft können Sie Informationen aus der Windows-Registrierung festlegen und abrufen. Im folgenden Beispiel wird das programmverzeichnis Word 2007 aus der Windows-Registrierung abgerufen.

Sub GetRegistryInfo() 
 Dim strSection As String 
 Dim strPgmDir As String 
 strSection = "HKEY_CURRENT_USER\Software\Microsoft" _ 
 & "\Office\12.0\Word\Options" 
 strPgmDir = System.PrivateProfileString(FileName:="", _ 
 Section:=strSection, Key:="PROGRAMDIR") 
 MsgBox "The directory for Word is - " & strPgmDir 
End Sub

Die PrivateProfileString-Eigenschaft weist drei Argumente auf: FileName, Section und Key. Um einen Wert für einen Registrierungseintrag zurückzugeben oder festzulegen, geben Sie eine leere Zeichenfolge ("") für das Argument FileName an. Das Argument Section sollte der vollständige Pfad zum Registrierungsunterschlüssel sein. Das Key-Argument sollte der Name eines Eintrags im Unterschlüssel sein, der durch Section angegeben wird.

Sie können informationen auch in der Windows-Registrierung festlegen, indem Sie die folgende PrivateProfileString-Syntax verwenden.

System.PrivateProfileString(FileName, Section, Key)=-Wert

Im folgenden Beispiel wird in der Windows-Registrierung im Unterschlüssel Options für Office Word 2007 der Eintrag DOC-PATH auf C:\My Documents festgelegt.

Sub SetDocumentDirectory() 
 Dim strDocDirectory As String 
 strDocDirectory = "HKEY_CURRENT_USER\Software\Microsoft" _ 
 & "\Office\10.0\Word\Options" 
 System.PrivateProfileString(FileName:="", _ 
 Section:=strDocDirectory, Key:="DOC-PATH") = "C:\My Documents" 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.