如何将 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文档中去