3

Существуют ли макросы для OpenOffice, позволяющие автоматически заменять определенные слова гиперссылками?

Каждый раз, когда я набираю слово "google" в OpenOffice, я хочу, чтобы это слово стало гиперссылкой на http://www.google.com/

1 ответ1

1

На самом деле, вы не можете позволить OOo немедленно заменить слово гиперссылкой (без написания макроса), но вы можете добиться этого, комбинируя AutoReplace и распознавание URL:

  • Вы можете определить правило автозамены, заменив " GoogleWWW " на " http://www.google.com " (как текст);
  • на втором шаге выберите Format меню -> AutoCorrect... -> Apply чтобы заставить OOo заменить текст ссылки гиперссылкой.

Я предложил заменить « GoogleWWW » на "Текст", потому что если вы используете просто "google", замена произойдет во второй раз при создании гиперссылки, в результате текст ссылки будет выглядеть как www.http://www.google.com.com .

РЕДАКТИРОВАТЬ:

Вот источник простого макроса для замены произвольного выделенного текста гиперссылкой (используйте с осторожностью, это просто "подтверждение концепции" - например, он не проверяет, содержит ли выделенный текст пробелы, поэтому результирующая ссылка может указывать на недействительный URL):

sub ReplaceByHyperlink
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    dim oSelection, oRange as object
    dim strSelectedWord as String
    rem ----------------------------------------------------------------------
    rem get access to the document and grab first selection
    oSelection = ThisComponent.CurrentController.Selection
    oRange = oSelection(0)
    rem ----------------------------------------------------------------------
    rem rudimentary input check (selection available, text selected?)
    If Not (HasUnoInterfaces(oRange, "com.sun.star.text.XTextRange")) Then
        MsgBox "no text available"
        exit sub
    End if
    strSelectedWord = oRange.getString
    If Len(strSelectedWord) < 1 Then
        MsgBox "No Text selected"
        exit sub
    End if
    rem ----------------------------------------------------------------------
    rem ok, there's some text selected, let's transform it...
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dim args1(4) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "Hyperlink.Text"
    args1(0).Value = strSelectedWord
    args1(1).Name = "Hyperlink.URL"
    args1(1).Value = "http://www." + LCase(strSelectedWord) + ".com/"
    args1(2).Name = "Hyperlink.Target"
    args1(2).Value = ""
    args1(3).Name = "Hyperlink.Name"
    args1(3).Value = strSelectedWord
    args1(4).Name = "Hyperlink.Type"
    args1(4).Value = 1
    dispatcher.executeDispatch(document, ".uno:SetHyperlink", "", 0, args1())
end sub

Вы можете назначить этот макрос для сочетания клавиш, используя Tools -> Customize -> Keyboard , например, SHIFT+CTRL+G. Таким образом, вам не нужно определять правило AutoCorrect .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .