LibreOffice (Calc) でExcel+VBAファイル開いてみる、動くか

VBAで動かす

LibreOfficeには、VBAモードがあり完璧ではありませんが動きます。

実際に動くか、WEB上にあったサンプルを動かしてみます。
自分なりの解決策です。正解かは保証しません。

VBA動かすと、クラッシュの連続。使い物にならない。
Apache OpenOfficeに変えてみた。このほうがマシみたい。

ExcelとLibreOffice、表の最大値は違う
LibreOffice日付型、文字列にはならない

まずは、Excel のマクロ付きサンプルを探してみる

ここメールアドレス入れれば、サンプルファイルがメール添付で送られてきます。

怪しいサイトもWEB上にはあるので、自己責任でお願いします。

VBA付きExcelファイルのサンプルがあるサイト:

ExcelでVBAが動かないとき

ボタンのマクロを登録し直す。

ボタン押しても、警告が出てくるだけ

マクロを登録し直す。

「サンプル1|月末処理の自動処理する」のファイルをCalcで開く

Excelで動きを確認して、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:

Excel 結果

Calc結果:

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が出てきます。

新規作成で好きな名前つけてください。

~.Pictures.Insert も使えないようです

コメント

  1. なり より:

    これは難しすぎますね。
    ど素人の文系マクロ初学者には・・・・。
    calcのマクロを学ぶにはどうしたらいいのでしょうか?

タイトルとURLをコピーしました