Сделать все экземпляры слова гиперссылкой в OpenOffice
Как я могу сделать каждый экземпляр слова, гиперссылки на файл на моем компьютере.
Мне удалось сделать это с одним экземпляром слова, но повторение этого заняло много времени, поэтому я надеюсь, что сама программа сможет это сделать.
Я также хотел бы использовать системные переменные% windir% и% userprofile% в файле.
Вот что я попробовал:
% WINDIR%\system32\shell32.dll
Однако это заменяется (и терпит неудачу) Openoffice, чтобы быть похожим на это:
"% 25windir% 25 \ system32 \ shell32.dll"
Если я добавлю двойные кавычки, openoffice добавляет еще одну пару к пути, и это также заставляет окна не найти файл.
Я просмотрел команду "Редактировать> Файл и заменить", но не вижу возможности заменить все установки слова гиперссылкой на файл, сохранив при этом слово.
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 для системных вызовов.