1 ダイアログを利用したマクロ自作
LibreOffice Calc のダイアログ(Excelのユーザフォームに相当)について、先日からこのブログに書いています。
ダイアログ操作に、Microsoft Office専用の言語VBAは使えません。LibreOfficeが対応している言語を使うことになります。その言語の中でも、LibreOffice Basic というのが、コードの書き方などで、VBAに近いようです。
VBAの解説ならば、ネット上にごろごろと情報があふれています。それに対し、LibreOffice Basic に関する情報となると、本当に数が限られます。実社会でのシェアを反映しての情報量です。
そうした中で、LibreOffice Basic について、とても参考になるWebサイト(ブログ)が見つかりました。「学校に通わずに学ぶログ」というタイトルのブログです。
そのブログ記事を参考にさせてもらい、自分なりに試行錯誤し、ちょっとしたマクロを作りました。
2 自作マクロのコード
今回自作したマクロは、ボタンをクリックすると、ダイアログ上に配置したTextField(テキストフィールド)に入力の文字列が、スプレッドシート(ワークシート)上のセルに転記されるというものです。
そのマクロコードは、次に掲載のとおりです。
Option VBASupport 1REM ***** BASIC *****Option Explicit'Subルーチンの外側でoDlgを宣言しておくDim oDlg As ObjectSub ShowMyDialogDialogLibraries.LoadLibrary("Standard")oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)oDlg.Execute()oDlg.Dispose()End SubSub TxtTenkiDim oTextField As ObjectDim sText As StringoTextField = oDlg.GetControl("TextField1")sText = Cstr(oTextField.getText)'A9セルに文字列を転記Thisworkbook.Worksheets(1).Range("A9").Value = sText'メッセージボックスに文字列表示MsgBox "入力した文字列:" & vbLf & sTextEnd Sub(コードは自己責任で、ご利用ください。)
よろしければ、このコードはどうぞ自由にご利用ください。ただし、くれぐれも自己責任でお願いします。万一、このマクロ実行によって不具合等が生じたとしても、当方は一切の責任を負いません。

3 LibreOffice BasicとVBAの同時使用
ごく短かく、簡単なコードですが、なんせLibreOffice Basicという言語は初めてです。ああでもないし、こうでもないと、いろいろ試行錯誤を重ねました。その結果、マクロが完成して、思いどおりに動作してくれたときは、ちょっとした感動でした。
このマクロ作成途中で、とてもうれしい発見がありました。LibreOffice BasicとVBAの、同時使用ができることです。なんと、2つをごちゃ混ぜで使っても、まともに動作するではありませんか。
上記2に掲載しているマクロコードの中味をじっくり見てもらうと分かりますが、
Thisworkbook.Worksheets(1).Range("A9").Value = sText
というVBAコード中で、変数sTextを利用できています。
つまり、LibreOffice Basicコード中で値を代入した変数sTextですが、VBAコードの中でその代入値を利用できているのです。
Thisworkbook.Worksheets(1).Range("A9").Value = sText
というVBAコード中で、変数sTextを利用できています。
つまり、LibreOffice Basicコード中で値を代入した変数sTextですが、VBAコードの中でその代入値を利用できているのです。
LibreOffice BasicとVBAの同時使用ができるとなると、マクロの利用幅がぐっと広がります。今後、大いに利用させてもらいます
それではまた次の記事で。
goosyun
![Excel マクロ&VBA [実践ビジネス入門講座]【完全版】 第3版 Excel マクロ&VBA [実践ビジネス入門講座]【完全版】 第3版](https://m.media-amazon.com/images/I/510iy3z5ioL._SL500_.jpg)