![VBAで動かす](https://take-web.main.jp/top/task_help/wp-content/uploads/2021/03/calc_vba.png)
![](https://take-web.main.jp/top/task_help/wp-content/themes/cocoon-master/images/man.png)
LibreOfficeには、VBAモードがあり完璧ではありませんが動きます。
実際に動くか、WEB上にあったサンプルを動かしてみます。
自分なりの解決策です。正解かは保証しません。
VBA動かすと、クラッシュの連続。使い物にならない。
Apache OpenOfficeに変えてみた。このほうがマシみたい。
ExcelとLibreOffice、表の最大値は違う
LibreOffice日付型、文字列にはならない
まずは、Excel のマクロ付きサンプルを探してみる
ここメールアドレス入れれば、サンプルファイルがメール添付で送られてきます。
怪しいサイトもWEB上にはあるので、自己責任でお願いします。
VBA付きExcelファイルのサンプルがあるサイト:
ExcelでVBAが動かないとき
ボタンのマクロを登録し直す。
ボタン押しても、警告が出てくるだけ
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/03/VBA_err28.png)
マクロを登録し直す。
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/03/VBA_reregiste.png)
「サンプル1|月末処理の自動処理する」のファイルをCalcで開く
Excelで動きを確認して、Calcで動かします。
![ExcelをCalcで開く](https://take-web.main.jp/top/brog/wp-content/uploads/2020-2-16_10-4_No-00.png)
ファイル自体は、問題なく開けました。
ボタンがおかしいので直す
「ツール」>「フォーム」>「デザインモード」で表示文字・VBA登録などを修正します。
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/03/btn_change28.png)
(1)表示文字変更
ボタン右クリックでメニュー出します。「コントロールのプロパティ」をクリック
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/03/control_migi28.png)
「タイトル」にボタン表示名を入れます
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/03/name_change28.png)
(2)イベントにVBAを登録する
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/03/ivent_change28.png)
VBAどこにある
![マクロ編集画面開く](https://take-web.main.jp/top/brog/wp-content/uploads/2020-2-16_10-8_No-00.png)
ツールバー「ツール」>>「マクロ」>>「マクロ管理」>>「LibreOffice Basic」と選択クリックします。
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2021/03/syuukei_28.png)
VBAProjectの中の「モジュール」>>「Module1」の中にあります。
ボタン押したら、エラーと文字化け
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/03/mojibake_err28.png)
文字化けは、一度ExcelのファイルをCalcで開きExcel形式で保存したら起きるようです。
実行したら、エラー発生
やはり、おまじないは完璧ではないということです。
![マクロ・エラー](https://take-web.main.jp/top/brog/wp-content/uploads/2020-2-16_10-28_No-00.png)
データが入ってる行数、列数を取得しているようなので数えて数値入れました。動くには動きましたが計算結果が違います。
なぜだろ? バグ?
わかりました。
ExcelとLibreOfficeでは、表のサイズが違います。
cmax0 = ws0.Range(“A1048576“).End(xlUp).Row ‘A65536
cmax1 = ws1.Range(“A1048576”).End(xlUp).Row
cnt = ws1.Range(“AMJ10“).End(xlToLeft).Column ‘XFD10
Excel:
![Excel 結果](https://take-web.main.jp/top/brog/wp-content/uploads/2020-2-16_14-20_No-00.png)
Calc結果:
![Calc 結果](https://take-web.main.jp/top/brog/wp-content/uploads/2020-2-16_14-34_No-00.png)
合ってる部分もある。わからないな
原因が大体わかりました、日付データが悪さしているようです。
![エラー日付データ](https://take-web.main.jp/top/brog/wp-content/uploads/2020-2-16_19-17_No-00.png)
(1)赤矢印のデータがおかしかったので入れ直しました。
‘—集計開始日と集計終了日を指定—
d1 = ws1.Range(“B2”).Value & “/” & ws1.Range(“C2”).Value & “/” & ws1.Range(“D2”).Value
d2 = ws1.Range(“B3”).Value & “/” & ws1.Range(“C3”).Value & “/” & ws1.Range(“D3”).Value
d1,d2が日付型ではないようなので、強制的に変換
‘—集計開始日と集計終了日を指定—
d1 = CDate(ws1.Range(“B2”).Value & “/” & ws1.Range(“C2”).Value & “/” & ws1.Range(“D2”).Value)
d2 = CDate(ws1.Range(“B3”).Value & “/” & ws1.Range(“C3”).Value & “/” & ws1.Range(“D3”).Value)
以上で、動くようになりました.
複数画像を貼り付けるマクロ VBAをCalcで実行してみる
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/04/dialog_no6.png)
>>BASIC ランタイムエラー. ‘423’
FileDialogがCalcでは使えないようです。
calc Basicでダイアログ開けるのかな?
LibreBasicをどこに書けばいいのか、わかりません。試すだけです。
モジュールの追加
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/04/add_module6.png)
1番の「モジュール」を選択し、2番のアイコンをクリックすると別窓のWindowが出てきます。
![](https://take-web.main.jp/top/task_help/wp-content/uploads/2022/04/module_addnew6.png)
新規作成で好きな名前つけてください。
コメント
これは難しすぎますね。
ど素人の文系マクロ初学者には・・・・。
calcのマクロを学ぶにはどうしたらいいのでしょうか?
私も初心者です。語学と同じだと思います、毎日コツコツ。