VBA をLibreOffice で動かすには -...

17
1 VBA LibreOffice で動かすには 作成:フリーソフトソリューション @kyoseishuryo LibreOffice VBA が動くようになりましたが、EXCEL ファイルを LibreOffice で開いたり VBA コードを貼り付けるだけではエラーになることがよくあります。 VBA LibreOffice で動かす方法を説明します。

Transcript of VBA をLibreOffice で動かすには -...

Page 1: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

1

VBAを LibreOfficeで動かすには

作成:フリーソフトソリューション @kyoseishuryo

LibreOfficeで VBAが動くようになりましたが、EXCELファイルを LibreOfficeで開いたり VBAの

コードを貼り付けるだけではエラーになることがよくあります。

VBAを LibreOfficeで動かす方法を説明します。

Page 2: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

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

Page 3: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

3

今回使用するプログラムの説明

「書き込み」ボタンをクリックすると、決まった所(茶色の枠で囲まれている箇所)に入力された文字

を最初の行に挿入し、(プログラムが実行された)時間を記録する VBAのプログラムです。

これを LibreOfficeで動かします。

<実行前>

「書き込み」ボタンをクリック

<実行後>

表の一番上に行が挿入され、

セル B2に入っていたコメントが最初の行に移動、その時間が記録されました。

Page 4: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

4

EXCELを LibreOfficeで開いて VBAを実行してみた

※ここは説明だけなので、同じ操作をやってみる必要はありません。

方法は後で説明しますが、EXCELファイルを LibreOfficeで開き、マクロを有効にしてみました。

「書き込み」ボタンを押してみても動きません。

さらに、メニューバーからマクロを呼び出し実行してみました。

エラーが出て、プログラムが止まりました。

Page 5: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

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プログラムの内容によっては、この方法で動かせない物があります。

Page 6: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

6

VBAが入っている EXCELファイルを LibreOffceで保存

VBAが入っている EXCELファイルを右クリック→「プログラムから開く(H)」→LibreOffice Calc」を

選択

この警告が出た場合は、マクロ実行に関するセキュリティレベルを「中」または「低」に設定し、

マクロを実行する前に一旦ファイルを閉じて、再度開く必要があります。

Page 7: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

7

メニューバー「ファイル(F)」→「名前を付けて保存(A)」をクリック

このダイアログが出たら、一番上の「ODF表計算ドキュメント(.ods)」を選択

ダイアログ下の「保存」ボタンをクリック

(保存された ODS形式でファイルが、開かれている状態になります)

Page 8: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

8

VBAプログラムを LibreOfficeで動くよう編集する

※始めに、

プログラムの赤枠部分は、VBAのコードであることをコンピューターに認識させるため、自動的に挿入されます。

もし挿入されていない場合、正しく動かなかったり、プログラムが使えなくなることがあります。

メニューバー「ツール(T)」→「マクロ(M)」→「マクロを実行」をクリック

Page 9: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

9

左側の「ライブラリ」から VBAのプログラムが入っているファイルの左側の+をクリック。ツリー表示させる。

「VBAProject」の左側の+をクリック。

EXCEL VBAの場合と同様に、プログラムが入っているモジュールを選択。

※これ以下のモジュールがどのように分類、ツリー表示されるかは変わる場合がありました。

右側の「マクロ名」から実行したいプログラムを選択し、「実行」ボタンをクリック。

エラーが出ます。

ダイアログの「OK」ボタンをクリックします。

エラーが出ていた箇所が選択された状態になります。

Page 10: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

10

行がずれないように注意して、エラーが出た所をコメントアウトします。

次に「実行」ボタンを押して再度マクロを実行します。

エラーが出た所を再度コメントアウトし、これをエラーが出なくなるまで繰り返します。

エラーが出なくなったので、プログラムが動くか試しましたが、動きません。

(今回はこの前に余分な行を削除しましたが、このプログラムの場合 マクロの実行→コメントアウト を繰り返すこと

で不自然に数行が挿入されます。)

Page 11: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

11

コマンドボタンからプログラムを実行させる

メニューバー「表示(V)」→「ツールバー(T)」→「フォームコントロール(J)」を選択

一番上の右側「デザインモード オン/オフ」をクリック。

Page 12: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

12

「書き込み」ボタンを右クリック→「コントロール(T)」

「イベント」タブをクリック

「実行時」の右側にある小さなボタンをクリック(...と表示)。

Page 13: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

13

右側の「マクロ(A)」をクリック

ボタンを押した時に実行させたいプログラムを選択→「OK」ボタンをクリック

Page 14: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

14

再び、一番上の右側「デザインモード オン/オフ」をクリック。

「書き込み」ボタンを押すと動くかテスト。

挿入された行だけ、時間が正しい形式で表示されていません。

Page 15: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

15

時間を正しい形式で表示させる

時間を入力するセルが挿入される一つ上にある、「時間」と書かれたセルを右クリック→「セルの書式設定(F)」を

クリック

(プログラムを用いて最初の行を挿入する仕組みになっているため、時間が入力されるセルは一つ上の物と同じ

書式になります。)

Page 16: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

16

(ここは文字列が入力されていますが、)

「カテゴリー」から「日付」を選択→「形式」が「1999/12/31 13:37」(YYYY/M/D H:MM)を選択→「OK」ボタンをクリ

ック

再びテスト。

Page 17: VBA をLibreOffice で動かすには - freesol.web.fc2.comfreesol.web.fc2.com/application/VBAtoLibreOffice.pdf · 4 EXCEL をLibreOfficeで開いてVBAを実行してみた ※ここは説明だけなので、同じ操作をやってみる必要はありません。

17

日時が正しい形式で表示されました。

(「時間」を記録するセルの右側の罫線が表示されていません。Ubuntuで開くとこの部分も罫線が表示されてい

ましたが、Windows Vistaでこれを直す方法はまだ見つかっていません。)

このあとに、元の EXCELファイルかバックアップしておいたデータを貼り付けて、ワークシートを復元されることを

おすすめします。

以上、最後までお付き合いいただいて、ありがとうございました。