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