LibreOfficeには、VBAモードがあり完璧ではありませんが動きます。
実際に動くか、WEB上にあったサンプルを動かしてみます。
自分なりの解決策です。正解かは保証しません。
VBA動かすと、クラッシュの連続。使い物にならない。
Apache OpenOfficeに変えてみた。このほうがマシみたい。
ExcelとLibreOffice、表の最大値は違う
LibreOffice日付型、文字列にはならない
まずは、Excel のマクロ付きサンプルを探してみる
ここメールアドレス入れれば、サンプルファイルがメール添付で送られてきます。
怪しいサイトもWEB上にはあるので、自己責任でお願いします。
VBA付きExcelファイルのサンプルがあるサイト:
ExcelでVBAが動かないとき
ボタンのマクロを登録し直す。
ボタン押しても、警告が出てくるだけ
マクロを登録し直す。
「サンプル1|月末処理の自動処理する」のファイルをCalcで開く
Excelで動きを確認して、Calcで動かします。
ファイル自体は、問題なく開けました。
ボタンがおかしいので直す
「ツール」>「フォーム」>「デザインモード」で表示文字・VBA登録などを修正します。
(1)表示文字変更
ボタン右クリックでメニュー出します。「コントロールのプロパティ」をクリック
「タイトル」にボタン表示名を入れます
(2)イベントにVBAを登録する
VBAどこにある
ツールバー「ツール」>>「マクロ」>>「マクロ管理」>>「LibreOffice Basic」と選択クリックします。
VBAProjectの中の「モジュール」>>「Module1」の中にあります。
ボタン押したら、エラーと文字化け
文字化けは、一度ExcelのファイルをCalcで開きExcel形式で保存したら起きるようです。
実行したら、エラー発生
やはり、おまじないは完璧ではないということです。
データが入ってる行数、列数を取得しているようなので数えて数値入れました。動くには動きましたが計算結果が違います。
なぜだろ? バグ?
わかりました。
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:
Calc結果:
合ってる部分もある。わからないな
原因が大体わかりました、日付データが悪さしているようです。
(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で実行してみる
>>BASIC ランタイムエラー. ‘423’
FileDialogがCalcでは使えないようです。
calc Basicでダイアログ開けるのかな?
LibreBasicをどこに書けばいいのか、わかりません。試すだけです。
モジュールの追加
1番の「モジュール」を選択し、2番のアイコンをクリックすると別窓のWindowが出てきます。
新規作成で好きな名前つけてください。
コメント
これは難しすぎますね。
ど素人の文系マクロ初学者には・・・・。
calcのマクロを学ぶにはどうしたらいいのでしょうか?
私も初心者です。語学と同じだと思います、毎日コツコツ。