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:"

しかし、エラーが発生しました

BASIC 構文エラー。期待される:、。

オブジェクトとして 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」と 2 回表示されます。
  • 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-- OpenOffice Basic ではなく、VBA のようです。

多くの優れた例を含む OpenOffice マクロの紹介については、Andrew Pitonyak の Macro Documentを参照してください。

「これは Excel VBA のコードです。OpenOffice Basic のコードは何ですか?」と言う代わりに、stackoverflow で次のように質問します。

「OpenOffice Basic でセル A1 を選択する必要があります。(オンライン ソース) を見て、X を試しましたが、Z 行について Y エラー メッセージが表示されました。」

于 2016-02-24T14:04:45.287 に答える