我有一列有很多 URL,其中一些不可点击(如蓝色),我需要逐个选择,然后按 ctrl+x、ctrl+v,然后按 Enter 将 URL 作为文本转换为 HTTP 链接。
这很烦人,我有大量的 URL,我确信存在某种东西可以将它们全部呈现为可点击的链接。
任何想法 ?
答案1
这是 LibreOffice Calc 的基本宏,用于在选定的 1 列工作表单元格范围内创建可点击的 URL 字符串链接。它会跳过任何空白、数字或日期时间单元格,但假定每个文本单元格都包含一个有效的 URL。如果选择了多列或第一行中有空白单元格,则为避免意外激活,将通过消息框中止。运行两次不会造成任何损害。按 Ctrl-Z 一次撤消 1 个单元格的效果。
如果复制到 (工具 | 宏 | 组织...) 下的模块My Macros
,它应该可用于所有 Calc 表。
感谢 Andrew Pitonyak 的贡献OOo 宏 文件的要点被剪断了。
Sub ActivateUrlsAsLinks
Const boxtitle = "URL activator"
Dim msg As String
Dim oSels As Object, cell As Object
oSels = ThisComponent.getCurrentController().getSelection()
cell = oSels.getCellByPosition(0, 0)
If oSels.Columns.getCount <> 1 Or cell.getString() = "" Then
msg = "Select cell range with URLs to be converted to clickable links, " & _
"then run this macro." & _
Chr(10) & Chr(10) & "NB: 1 column, and a URL in first row."
MsgBox msg, MB_ICONSTOP, boxtitle
Else
Dim txtfld As Object, celltxt As Object
Dim rix As Integer, subs As Integer, cstr as String
subs = 0
For rix = 0 To oSels.Rows.getCount - 1
cell = oSels.getCellByPosition(0, rix)
cstr = cell.getString()
If Len(Trim(cstr)) > 0 And Not IsNumeric(cstr) And Not IsDate(cstr) Then
txtfld = ThisComponent.createInstance("com.sun.star.text.TextField.URL")
txtfld.Representation = cstr
txtfld.URL = ConvertToURL(cstr)
cell.setString("")
celltxt = cell.getText()
celltxt.insertTextContent(celltxt.createTextCursor(), txtfld, False)
subs = subs + 1
End If
Next rix
msg = "Replaced " & subs & " cells"
MsgBox msg, MB_ICONINFORMATION, boxtitle
End If
End Sub