Comments
Description
Transcript
VBA を LibreOffice で動かすには
VBA を LibreOffice で動かすには LibreOffice で VBA が動くようになりましたが、EXCEL ファイルを LibreOffice で開いたり VBA の コードを貼り付けるだけではエラーになることがよくあります。 VBA を LibreOffice で動かす方法を説明します。 作成:フリーソフトソリューション @kyoseishuryo 1 目次 プログラムを実行したときの環境 ......................................................................................................... 2 今回使用するプログラムの説明 .......................................................................................................... 3 EXCEL を LibreOffice で開いて VBA を実行してみた ..................................................................... 4 VBA を LibreOffice で使えるように編集する ..................................................................................... 5 注意.................................................................................................................................................. 5 VBA が入っている EXCEL ファイルを LibreOffce で保存 ............................................................ 6 VBA プログラムを LibreOffice で動くよう編集する ........................................................................ 8 コマンドボタンからプログラムを実行させる ................................................................................... 11 時間を正しい形式で表示させる ................................................................................................... 15 プログラムを実行したときの環境 OS:Windows VISTA Service Pack2 LibreOffice:バージョン: 4.3.1.2 2 今回使用するプログラムの説明 「書き込み」ボタンをクリックすると、決まった所(茶色の枠で囲まれている箇所)に入力された文字 を最初の行に挿入し、(プログラムが実行された)時間を記録する VBA のプログラムです。 これを LibreOffice で動かします。 <実行前> 「書き込み」ボタンをクリック ↓ <実行後> 表の一番上に行が挿入され、 セル B2に入っていたコメントが最初の行に移動、その時間が記録されました。 3 EXCEL を LibreOffice で開いて VBA を実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。 方法は後で説明しますが、EXCEL ファイルを LibreOffice で開き、マクロを有効にしてみました。 「書き込み」ボタンを押してみても動きません。 さらに、メニューバーからマクロを呼び出し実行してみました。 エラーが出て、プログラムが止まりました。 4 VBA を LibreOffice で使えるように編集する 注意 この方法だとワークシートのデータが消えたり、プログラムが使えなくなることがあります。 ファイルをバックアップするか、元の EXCEL ファイルを残しておいてから試してください。 このプログラムを LibreOffice で動かしてみる。 コメント 時間 このプログラムを LibreOffice で動かしてみる。 すごい、書き込むのに驚異的な速さ。 使わない関数を消してみた。 freesol アカウントで開いてみた。 久しぶりに、Excel で開いてみた。 このシステムはコメントに通し番号があっても良いかな。 眠たい。 2016/7/22 11:04 2016/7/22 10:11 2016/7/22 10:10 2016/7/22 9:53 2016/7/3 20:39 2013/10/3 14:24 2013/10/3 14:24 この方法でやると、上の図のようにワークシートには不自然に空の行が挿入されるので、 余分な行を消し最後にワークシートを復元します。 VBA プログラムの内容によっては、この方法で動かせない物があります。 5 VBA が入っている EXCEL ファイルを LibreOffce で保存 VBA が入っている EXCEL ファイルを右クリック→「プログラムから開く(H)」→LibreOffice Calc」を 選択 ↓ この警告が出た場合は、マクロ実行に関するセキュリティレベルを「中」または「低」に設定し、 マクロを実行する前に一旦ファイルを閉じて、再度開く必要があります。 6 メニューバー「ファイル(F)」→「名前を付けて保存(A)」をクリック ↓ このダイアログが出たら、一番上の「ODF 表計算ドキュメント(.ods)」を選択 ↓ ダイアログ下の「保存」ボタンをクリック (保存された ODS 形式でファイルが、開かれている状態になります) 7 VBA プログラムを LibreOffice で動くよう編集する ※始めに、 プログラムの赤枠部分は、VBA のコードであることをコンピューターに認識させるため、自動的に挿入されます。 もし挿入されていない場合、正しく動かなかったり、プログラムが使えなくなることがあります。 メニューバー「ツール(T)」→「マクロ(M)」→「マクロを実行」をクリック 8 左側の「ライブラリ」から VBA のプログラムが入っているファイルの左側の+をクリック。ツリー表示させる。 ↓ 「VBAProject」の左側の+をクリック。 ↓ EXCEL VBA の場合と同様に、プログラムが入っているモジュールを選択。 ※これ以下のモジュールがどのように分類、ツリー表示されるかは変わる場合がありました。 ↓ 右側の「マクロ名」から実行したいプログラムを選択し、「実行」ボタンをクリック。 エラーが出ます。 ダイアログの「OK」ボタンをクリックします。 ↓ エラーが出ていた箇所が選択された状態になります。 9 行がずれないように注意して、エラーが出た所をコメントアウトします。 次に「実行」ボタンを押して再度マクロを実行します。 エラーが出た所を再度コメントアウトし、これをエラーが出なくなるまで繰り返します。 エラーが出なくなったので、プログラムが動くか試しましたが、動きません。 (今回はこの前に余分な行を削除しましたが、このプログラムの場合 マクロの実行→コメントアウト を繰り返すこと で不自然に数行が挿入されます。) 10 コマンドボタンからプログラムを実行させる メニューバー「表示(V)」→「ツールバー(T)」→「フォームコントロール(J)」を選択 一番上の右側「デザインモード オン/オフ」をクリック。 11 「書き込み」ボタンを右クリック→「コントロール(T)」 「イベント」タブをクリック ↓ 「実行時」の右側にある小さなボタンをクリック(...と表示)。 12 右側の「マクロ(A)」をクリック ボタンを押した時に実行させたいプログラムを選択→「OK」ボタンをクリック 13 再び、一番上の右側「デザインモード オン/オフ」をクリック。 「書き込み」ボタンを押すと動くかテスト。 挿入された行だけ、時間が正しい形式で表示されていません。 14 時間を正しい形式で表示させる 時間を入力するセルが挿入される一つ上にある、「時間」と書かれたセルを右クリック→「セルの書式設定(F)」を クリック (プログラムを用いて最初の行を挿入する仕組みになっているため、時間が入力されるセルは一つ上の物と同じ 書式になります。) 15 (ここは文字列が入力されていますが、) 「カテゴリー」から「日付」を選択→「形式」が「1999/12/31 13:37」(YYYY/M/D H:MM)を選択→「OK」ボタンをクリ ック 再びテスト。 16 日時が正しい形式で表示されました。 (「時間」を記録するセルの右側の罫線が表示されていません。Ubuntu で開くとこの部分も罫線が表示されてい ましたが、Windows Vista でこれを直す方法はまだ見つかっていません。) このあとに、元の EXCEL ファイルかバックアップしておいたデータを貼り付けて、ワークシートを復元されることを おすすめします。 以上、最後までお付き合いいただいて、ありがとうございました。 17