Ihorは、Word文書へのURLハイパーリンクの挿入を自動化したいと考えています。 URLは、「ここをクリック」などのフレーズに関連付けられます。彼は最初に特定のWebサイトのURLをクリップボードにコピーします。

次に、[ハイパーリンクの挿入]ダイアログボックス(Ctrl + K)を開き、クリップボードからURLを適切なフィールドに貼り付け(Ctrl + V)、[OK]をクリックするマクロを記録します。後でマクロを実行すると、実行するたびに同じURLが提供されます。 Ihorは、マクロを実行するたびに別のURLをダイアログボックスに貼り付けたいと考えていますが、その方法が不足しているようです。

マクロを記録するとき、それはそれが何をするかについて非常に文字通りです—それはダイアログボックスがどのように記入されるかを含めてあなたがとるステップを正確に記録します。解決策は、ダイアログボックスに新しい情報を貼り付ける方法を探すことではなく、ハイパーリンクをどのように作成しているかを調べることです。

マクロレコーダを実行した状態でハイパーリンクを挿入した場合に記録される内容は次のとおりです。

Sub Macro1()

' ' Macro1 Macro ' '     ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _         "//", SubAddress:="", ScreenTip:="", TextToDisplay:= _         "click here"

End Sub

Ihorが変更したいのは、Addressプロパティに割り当てられているハイパーリンクのターゲットです。これは、ダイアログボックスの[アドレス]フィールドに「貼り付け」られるものです。これを行うには、次のような簡単な方法でマクロを変更できます。

Sub Macro2()

Dim sTemp As String     sTemp = "//"



ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _       Address:= sTemp, SubAddress:="", ScreenTip:="", _       TextToDisplay:= "click here"

End Sub

この例で行われたのは、マクロの先頭にある不要なコメントの一部を削除し、ハイパーリンクのターゲットを含む文字列変数sTempを作成することだけです。次に、この変数はAddressプロパティに割り当てられます。ターゲットを変更するには、sTemp変数の値を変更するだけで済みます。これを行うには、いくつかの方法があります。

1つの方法は、次のように、InputBox関数を使用して独自のダイアログボックスを作成することです。

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

もちろん、Ihorは、彼のプロセスで実際にURLをクリップボードにコピーすると述べました。それが彼が使用したいプロセスである場合、マクロの実行時にクリップボードにあるものに基づいてURLを割り当てることができます。これを行う方法は次のとおりです:

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

このようにクリップボードを利用するには、VBAエディターでMicrosoftフォームの参照を設定する必要があります。 (エディターの[ツール]メニューから[参照]を選択します。)

また、これらの例はすべて、新しいハイパーリンクのAddressプロパティに割り当てられているものを変更することに注意してください。マクロを変更して、TextToDisplayプロパティに割り当てられているものも変更する必要がある可能性があります。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(11906)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice 365のWordに適用されます。このヒントのバージョンは、ここにWordの古いメニューインターフェイス: