Ändern, was in ein Dialogfeld eingefügt wird (Microsoft Word)
Ihor möchte das Einfügen eines URL-Hyperlinks in ein Word-Dokument automatisieren. Die URL wird mit einer Phrase verknüpft, z. B. „hier klicken“. Er kopiert zuerst die URL einer bestimmten Website in die Zwischenablage.
Anschließend zeichnet er ein Makro auf, das das Dialogfeld Hyperlink einfügen (Strg + K) öffnet, die URL aus der Zwischenablage (Strg + V) in das entsprechende Feld einfügt und auf OK klickt. Wenn er das Makro später ausführt, erhält er jedes Mal dieselbe URL, wenn er es ausführt. Ihor möchte jedes Mal, wenn er das Makro ausführt, eine andere URL in das Dialogfeld einfügen, scheint aber nicht zu wissen, wie das geht.
Wenn Sie ein Makro aufzeichnen, ist es sehr wörtlich, was es tut – es zeichnet genau die Schritte auf, die Sie ausführen, einschließlich des Ausfüllens von Dialogfeldern. Die Lösung besteht nicht darin, nach Möglichkeiten zu suchen, neue Informationen in ein Dialogfeld einzufügen, sondern zu untersuchen, wie Sie Ihren Hyperlink erstellen.
Folgendes wird aufgezeichnet, wenn Sie bei laufendem Makrorecorder einen Hyperlink einfügen:
Sub Macro1() ' ' Macro1 Macro ' ' ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _ "//", SubAddress:="", ScreenTip:="", TextToDisplay:= _ "click here" End Sub
Was Ihor ändern möchte, ist das Ziel für den Hyperlink, der der Address-Eigenschaft zugewiesen ist. Dies wird in das Adressfeld des Dialogfelds „eingefügt“. Zu diesem Zweck können Sie Ihr Makro auf einfache Weise ändern, z. B.:
Sub Macro2() Dim sTemp As String sTemp = "//" ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= sTemp, _ SubAddress:="", ScreenTip:="", TextToDisplay:= "click here" End Sub
In diesem Beispiel wurden lediglich einige der unnötigen Kommentare am Anfang des Makros gelöscht und eine Zeichenfolgenvariable sTemp erstellt, die jetzt das Ziel für den Hyperlink enthält. Diese Variable wird dann der Address-Eigenschaft zugewiesen. Um das Ziel zu ändern, muss nur der Wert der sTemp-Variablen geändert werden – und es gibt verschiedene Möglichkeiten, dies zu tun.
Eine Möglichkeit besteht darin, eine InputBox-Funktion zu verwenden, um ein eigenes Dialogfeld auf folgende Weise zu erstellen:
Sub Macro3() Dim sTemp As String Dim sPrompt As String Dim sTitle As String sPrompt = "Enter the target for the hyperlink" sTitle = "Hyperlink Destination" sTemp = "//" sTemp = InputBox(sPrompt, sTitle, sTemp) ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= sTemp, _ SubAddress:="", ScreenTip:="", TextToDisplay:= "click here" End Sub
Natürlich erwähnte Ihor, dass er in seinem Prozess die URL tatsächlich in die Zwischenablage kopiert. Wenn dies der Prozess ist, den er verwenden möchte, ist es möglich, die URL basierend auf den Angaben in der Zwischenablage zuzuweisen, wenn das Makro ausgeführt wird. So würden Sie das machen:
Sub Macro4() Dim sTemp As String Dim MyData As DataObject Set MyData = New DataObject MyData.GetFromClipboard sTemp = Trim(MyData.GetText(1)) ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= sTemp, _ SubAddress:="", ScreenTip:="", TextToDisplay:= "click here" End Sub
Um die Zwischenablage auf diese Weise nutzen zu können, müssen Sie im VBA-Editor eine Referenz für Microsoft Forms einrichten. (Wählen Sie im Editor im Menü Extras die Option Referenzen.)
Beachten Sie auch, dass alle diese Beispiele ändern, was der Address-Eigenschaft Ihres neuen Hyperlinks zugewiesen ist. Es besteht eine gute Chance, dass Sie das Makro ändern möchten, um auch die der TextToDisplay-Eigenschaft zugewiesenen Eigenschaften zu ändern.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (138) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: