
単語のすべてのインスタンスをコンピューター上のファイルへのハイパーリンクにするにはどうすればよいでしょうか。
単語の 1 つのインスタンスでそれを実行することができましたが、これを繰り返すと時間がかかるため、プログラム自体で実行できることを期待しています。
また、ファイル内の %windir% および %userprofile% システム変数も使用したいと思います。
私が試したことは次のとおりです:
%windir%\system32\shell32.dll
ただし、これは OpenOffice によって次のように置き換えられ (失敗します)。
"%25windir%25\system32\shell32.dll"
二重引用符を追加すると、OpenOffice はパスに別のペアを追加し、Windows がファイルを見つけられなくなります。
編集 > ファイルと置換で確認しましたが、単語をそのままにして、単語のすべてのインストールをファイルへのハイパーリンクに置き換えるオプションが見つかりません。
答え1
まず、作成した既存のリンクを選択してコピーします。次に、このマクロを実行すると、「TheWordToLink」のすべての出現箇所が検索され、その場所にリンクが貼り付けられます。
Sub PasteHyperlinks
Dim vDescriptor, vFound, oVC
Dim document, dispatcher
oVC = ThisComponent.CurrentController.ViewCursor
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
vDescriptor = ThisComponent.createSearchDescriptor()
With vDescriptor
.SearchString = "TheWordToLink"
.SearchWords = True
.SearchCaseSensitive = False
End With
vFound = ThisComponent.findFirst(vDescriptor)
Do While Not IsNull(vFound)
oVC.gotoRange(vFound, False)
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
vFound = ThisComponent.findNext( vFound.End, vDescriptor)
Loop
End Sub
検索と置換のコードは、Andrew Pitonyak のマクロドキュメント。
環境変数に関しては、より難しい解決策が必要です。つまり、リンクからマクロを呼び出し、マクロがファイルへのシステム コールを実行します。Basic を使用している場合:
- 見るhttps://forum.openoffice.org/en/forum/viewtopic.php?f=45&t=53609ハイパーリンクでマクロを呼び出す方法。
- 見るOpenOfficeで自動リンクを作成するハイパーリンクを見つけて作成できるコード。
- 見るhttps://forum.openoffice.org/en/forum/viewtopic.php?f=29&t=25047パス内の環境変数を使用するマクロの場合。
- 見るhttps://forum.openoffice.org/en/forum/viewtopic.php?f=44&t=7918システムコール用。