如何将 Excel VBA 宏移植到 OpenOffice 宏?

Posted

技术标签:

【中文标题】如何将 Excel VBA 宏移植到 OpenOffice 宏?【英文标题】:How to port Excel VBA macro to OpenOffice macro? 【发布时间】:2014-02-25 12:53:14 【问题描述】:

这里是创建超链接的宏:

Sub HyperMaker()
    Dim r As Range
    Dq = Chr(34)
    For Each r In Selection
        r.Formula = "=HYPERLINK(" & Dq & "http://" & r.Text & Dq & ";" & Dq & r.Text & Dq & ")"
    Next r
End Sub

我尝试将此宏转换为 OpenOffice 宏(使用 http://www.business-spreadsheets.com/vba2oo.asp)

Sub HyperMaker()
Dim r As Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)
Dq = Chr(34)
For Each r In Selection
r.Formula = "=HYPERLINK(" & Dq & "http://" & r.Text & Dq & ";" & Dq & r.Text & Dq & ")"
Next r
End Sub

但出现错误:BASIC syntax error: Unexpected symbol: Dim.Expected:,.

用逗号替换 Dim 没有帮助。 如何让它在 OpenOffice 中运行?

【问题讨论】:

我不知道 OpenOffice 宏与 VBA 有何不同,但 Dim r as 缺少类型? Range 似乎不是您使用的转换器可识别的数据类型,因此请尝试使用 Dim r as Variant 对,我没有 OpenOffice,所以我无法真正帮助您解决这个问题。也许其他人会出现并拯救你 【参考方案1】:

解决办法:

Sub makeHyperlinks()
    Dim sh As Object, z As Object, c As Object
    Dim qCells As Object, enuCells As Object
    sh = ThisComponent.Sheets.getByName("YourSheetName")
    z = sh.getCellRangeByName("B1:B5") ' your column (or rectangle)
    qCells = z.queryContentCells(-1)
    enuCells = qCells.Cells.createEnumeration
    Do While enuCells.hasMoreElements
      c = enuCells.nextElement
      c.Formula = "=HYPERLINK(""http://" & c.String & """)"
    Loop
End Sub

【讨论】:

是什么导致了你的问题,你能解释一下吗? OpenOffice 对 VBA 宏的支持有限,它不支持所有 VBA 功能。与 Visual Basic for Applications 相比,OpenOffice Basic 中的代码构建方式存在根本差异。 Excel VBA 代码不等同于 OpenOffice Calc Basic 脚本。

以上是关于如何将 Excel VBA 宏移植到 OpenOffice 宏?的主要内容,如果未能解决你的问题,请参考以下文章

如何将用Google表格编写的脚本迁移到VBA中的MS Excel宏?

使用Excel VBA,如何将某一个工作表保存到新建的Excel中?

如何用VBA宏程序将excel中的内容批量复制到word文档中去

用于将数据粘贴到新表行中的 VBA 宏 - Excel

如何向/从具有 VBA 宏计算的 Excel 文件发送和接收信息

如何用VBA宏程序将excel中的内容批量复制到word文档中去