
Как сделать так, чтобы каждое упоминание слова было гиперссылкой на файл на моем компьютере?
Мне удалось сделать это с одним экземпляром слова, но повторение этого займет много времени, поэтому я надеюсь, что программа сама справится с этим.
Я также хотел бы использовать системные переменные %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
Код поиска и замены взят из раздела 7.14Макродокумент Эндрю Питоняка.
Что касается переменных окружения, то тут требуется более сложное решение. То есть, вызвать макрос из ссылки, а затем макрос выполнит системный вызов файла. Если вы используете 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для системных вызовов.