1

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

这是每 5 秒刷新一次的宏。

Private Sub Workbook_Open()
' Written in ThisWorkbook
Call RefreshTime
End Sub

Sub RefreshTime()
' Written in a module
Application.ScreenUpdating = False
ActiveWorkbook.RefreshAll
Application.OnTime Now + TimeValue("00:00:05"), "RefreshTime"
Range("B10").Value = "My Current Time of the System:"
Range("C10").Value = Format(Now, "hh:mm:ss AM/PM")
Beep
Application.ScreenUpdating = True

End Sub

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

Private Sub Workbook_Open()
' Written in ThisWorkbook
Call RefreshTime
End Sub
Sub RefreshTime()
' Written in a module
ThisComponent.LockControllers
ThisComponent.RefreshAll
Application.OnTime Now + TimeValue("00:00:05"), "RefreshTime"
ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("B10")).Value = "My Current Time of the System:"
ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("C10")).Value = Format(Now, "hh:mm:ss AM/PM")
Beep
ThisComponent.UnlockControllers
End Sub

这行代码导致语法错误是:

ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getCellDim oSheet as Object[n]oSheet =  ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("B10")).Value = "My Current Time of the System:"

但是出现错误

基本语法错误。预期的:,。

在 oSheet 中作为对象。

如何让它在 OpenOffice 中工作?

4

1 回答 1

1

这段代码看起来有很多问题。让我们看一下这一行:

ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet.getcellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("B10")).Value = "我的当前时间系统:”

  • 它太长了。您需要按Enter添加多个换行符。
  • 它说“ThisComponent.CurrentController”两次。
  • Dim oSheet as Object[n]-- 但 n 从未被声明或定义。
  • ActiveSheet.getcell- 我不知道有任何这样的方法。请参阅https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Cells_and_Ranges
  • ByName(("B10"))-- 括号太多,同样没有“ByName”这样的方法。
  • 是什么$1?也许你的意思是一个范围,比如"$A1:$A5".

还:

  • Private Sub Workbook_Open-- 这看起来像 VBA,而不是 OpenOffice Basic。

有关包含许多优秀示例的 OpenOffice 宏的介绍,请参阅Andrew Pitonyak 的宏文档

不要说:“这是 Excel VBA 中的代码;OpenOffice Basic 中的代码是什么?”,而是在 stackoverflow 上提出如下问题:

“我需要在 OpenOffice Basic 中选择单元格 A1。查看(在线资源),我尝试了 X,但它给出了有关 Z 行的 Y 错误消息。”

于 2016-02-24T14:04:45.287 回答