VBAをLibreOfficeで動かす方法

2017年2月15日

LibreOfficeでVBAが動くようになりましたが、EXCELファイルをLibreOfficeで開いたりVBAのコードを貼り付けるだけではエラーになることがよくあります。

VBAをLibreOfficeで動かすのに、私がやっている方法を説明します。

※プログラムを実行したときの環境

OS:Windows VISTA Service Pack2
LibreOffice:バージョン: 4.3.1.2

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

「書き込み」ボタンをクリックすると、決まった所(茶色の枠で囲まれている箇所)に入力された文字を最初の行に挿入し、(プログラムが実行された)時間を記録するVBAのプログラムです。
これをLibreOfficeで動かします。

<実行前>0bkbym「書き込み」ボタンをクリック

<実行後>
%e5%ae%9f%e8%a1%8c%e5%be%8c表の一番上に行が挿入され、
セルB2に入っていたコメントが最初の行に移動、その時間が記録されました。

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

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

方法は後で説明しますが、EXCELファイルをLibreOfficeで開き、マクロを有効にしてみました。
4-1-%e3%83%9e%e3%82%af%e3%83%ad%e6%9c%89%e5%8a%b9%e5%8c%96

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

さらに、メニューバーからマクロを呼び出し実行してみました。
4-2-%e3%82%a8%e3%83%a9%e3%83%bc%e3%83%a1%e3%83%83%e3%82%bb%e3%83%bc%e3%82%b8

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

VBAをLibreOfficeで使えるように編集する

注意
この方法だとワークシートのデータが消えたり、プログラムが使えなくなることがあります。
ファイルをバックアップするか、元のEXCELファイルを残しておいてから試してください。
5-%e5%ae%9f%e8%a1%8c%e7%b5%90%e6%9e%9c

この方法でやると、上の図のようにワークシートには不自然に空の行が挿入されるので、
余分な行を消し最後にワークシートを復元します。

VBAプログラムの内容によっては、この方法で動かせない物があります。

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

6-1-libreoffice%e3%81%a7%e4%bf%9d%e5%ad%98

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

6-2
この警告が出た場合は、マクロ実行に関するセキュリティレベルを「中」または「低」に設定し、
マクロを実行する前に一旦ファイルを閉じて、再度開く必要があります。

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

7-1-ods%e3%82%92%e9%81%b8%e6%8a%9e
このダイアログが出たら、一番上の「ODF表計算ドキュメント(.ods)」を選択

ダイアログ下の「保存」ボタンをクリック
(保存されたODS形式でファイルが、開かれている状態になります)

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

8-1-libreoffice%e3%81%a7
※始めに、
プログラムの赤枠部分は、VBAのコードであることをコンピューターに認識させるため、自動的に挿入されます。
もし挿入されていない場合、正しく動かなかったり、プログラムが使えなくなることがあります。

8-1-%e3%83%9e%e3%82%af%e3%83%ad%e3%82%92%e5%ae%9f%e8%a1%8c
メニューバー「ツール(T)」→「マクロ(M)」→「マクロを実行」をクリック

9-1-%e3%83%84%e3%83%aa%e3%83%bc%e8%a1%a8%e7%a4%ba
左側の「ライブラリ」からVBAのプログラムが入っているファイルの左側の+をクリック。ツリー表示させる。

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

EXCEL VBAの場合と同様に、プログラムが入っているモジュールを選択。
※これ以下のモジュールがどのように分類、ツリー表示されるかは変わる場合がありました。

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

9-2-%e5%ae%9f%e8%a1%8c%e7%b5%90%e6%9e%9c
エラーが出ます。
ダイアログの「OK」ボタンをクリックします。

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

10-1-%e3%82%b3%e3%83%a1%e3%83%b3%e3%83%88%e3%82%a2%e3%82%a6%e3%83%88
行がずれないように注意して、エラーが出た所をコメントアウトします。
次に「実行」ボタンを押して再度マクロを実行します。
エラーが出た所を再度コメントアウトし、これをエラーが出なくなるまで繰り返します。

10-2-%e5%8b%95%e3%81%8b%e3%81%aa%e3%81%84
エラーが出なくなったので、プログラムが動くか試しましたが、動きません。
(今回はこの前に余分な行を削除しましたが、このプログラムの場合 マクロの実行→コメントアウト を繰り返すことで不自然に数行が挿入されます。)

コマンドボタンからプログラムを実行させる11-1-%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%9c%e3%82%bf%e3%83%b3

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

11-2-%e3%83%87%e3%82%b6%e3%82%a4%e3%83%b3%e3%83%a2%e3%83%bc%e3%83%89
一番上の右側「デザインモード オン/オフ」をクリック。

12-1-%e3%82%b3%e3%83%b3%e3%83%88%e3%83%ad%e3%83%bc%e3%83%ab
「書き込み」ボタンを右クリック→「コントロール(T)」

12-2-%e3%82%a4%e3%83%99%e3%83%b3%e3%83%88
「イベント」タブをクリック

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

13-1-%e5%89%b2%e5%bd%93
右側の「マクロ(A)」をクリック

13-2-%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e3%82%92%e9%81%b8%e6%8a%9e
ボタンを押した時に実行させたいプログラムを選択→「OK」ボタンをクリック

13-3-%e3%83%87%e3%82%b6%e3%82%a4%e3%83%b3%e3%83%a2%e3%83%bc%e3%83%89
再び、一番上の右側「デザインモード オン/オフ」をクリック。

%e6%9b%b8%e3%81%8d%e8%be%bc%e3%81%bf%e3%83%9c%e3%82%bf%e3%83%b3%e3%81%ae%e3%83%86%e3%82%b9%e3%83%88
「書き込み」ボタンを押すと動くかテスト。

16-1-%e5%86%8d%e3%81%b3%e3%83%86%e3%82%b9%e3%83%88
挿入された行だけ、時間が正しい形式で表示されていません。

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

15-1-%e6%ad%a3%e3%81%97%e3%81%84%e5%bd%a2%e5%bc%8f
時間を入力するセルが挿入される一つ上にある、「時間」と書かれたセルを右クリック→「セルの書式設定(F)」をクリック
(プログラムを用いて最初の行を挿入する仕組みになっているため、時間が入力されるセルは一つ上の物と同じ書式になります。)

15-2-%e6%9b%b8%e5%bc%8f%e3%81%9b%e3%81%a3%e3%81%a6
(ここは文字列が入力されていますが、)
「カテゴリー」から「日付」を選択→「形式」が「1999/12/31 13:37」(YYYY/M/D H:MM)を選択→「OK」ボタンをクリック

16-1-%e5%86%8d%e3%81%b3%e3%83%86%e3%82%b9%e3%83%88
再びテスト。

16-2-%e5%ae%8c%e6%88%90
日時が正しい形式で表示されました。
(「時間」を記録するセルの右側の罫線が表示されていません。Ubuntuで開くとこの部分も罫線が表示されていましたが、Windows Vistaでこれを直す方法はまだ見つかっていません。)

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

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

最後に

ここに書いたこと以外にも、他にも対策が必要になることも考えられる。
(LibreOfficeが進化してくると、VBAの関数などで対応できる物が増えてきて、将来的にこの操作が必要なくなってくることだろう。)
実際のVBAのプログラムを例に、LibreOffice BASICで動くようにする操作を冊子のような物にまとめてみた。
必要であれば、参考にしていただければと思う。
http://freesol.web.fc2.com/application/VBAtoLibreOffice.pdf

LibreOfficeでVBAを動かす 関西LibreOffice勉強会
 (VBAがLibreOfficeで動かない理由とそのとき考えた対策)

Lubuntu16.04のインストール

2016年12月1日

Ubuntu15.10を使っていたが、ほとんど起動させる度ににフリーズしていた。

多いときには1日に10回以上フリーズしたこともある。

そこでOSをEubuntuかLubuntuに換えることを思い付いた。

調べてみるとLubuntuはOSへの負担が少ないらしい。

 

以前Lubuntuを使っていたことがあったが、Lubuntuもよくフリーズしていた。

どうしようか迷ったが、Lubuntu16.04をインストールしてみた。

新しいバージョンになっているし、ほとんどフリーズせず使えている。

また、以前のLubuntuには入力予測はついていなかったが、新しいLubuntuには入力予測がついていたのが感動した。

Ubuntu15.10をインストール

2016年2月7日

Lubuntu15.04が入っていたパソコン Gateway GT-5094j にUbuntu15.10をインストールした。

もっと苦戦すると思ったが、意外とすんなり完了した。

以前、Ubuntu13.10とUbuntu14.04をインストールしてみたら動かなかったことがあるからだ。

今日、Ubuntu15.10をブート起動して使ってみて、日本語入力もできたし問題なかったから、そのままインストールした。

既に2回フリーズしたが、使えそう。

Lubuntu15.04にアップグレード
Lubuntu14.10のインストール
Ubuntu13.10をインストールしたらOSが起動しなくなった

 

Firefoxがオペレーティングシステムになる日

2015年8月9日

ネットスケープナビゲーターがかなり使われていた頃、ネットスケープをOSにすることが考えられていたと、以前聞いたことがある。
今度はFirefoxをOSにしようという取り組みがされている。
8月8日に京都であったオープンソースカンファレンスで知った。
http://fxos.org/

そのメリットはホームページを作るのと技術であらゆる種類のプログラムが作れること。
タブレットに表示されたホームページの画面から、外付けの装置がコントロールされているのを見た。
これまでは、例えばホームページを作るのと、ウインドウアプリケーションを作るのと、機械を制御するのでは、全く別のプログラミング言語を使っていた。
確かにこれは画期的だ。
これで自分のパソコンやスマートフォンに足りないと思う機能があれば、自分で作れたら良い。

私なら日記やメモをスマートフォンやタブレットを使って書いて、インターネットを通さず他の端末とデータをやり取りできるシステムを作りたい。
ネットにデータを保存した場合、知らない間にそれを集められたり思わぬ所に送られたりするかもしれないと考えるからである。
もし端末を無くした場合の被害は大きくなるが、リスクを自分で判断して自分が良いと思う使い方をできるようになりたい。

プリンタドライバのインストール

2015年7月17日
Lubuntu(version 15.04)から印刷できるように、Linux用のプリンタドライバーをインストールした。
キャノンのホームページから、ドライバーを探すのに手間取った。
—–
まずはマニュアルをダウンロード。
それを右クリックして、ファイルを展開した。
ドライバーをダウンロードしたあと、インストールするにはどんなコマンドを使えば良いか丁寧に説明してある。
それから実際にインストールする。
インストールが終わった後の設定はコマンドラインでやったが、質問に答えていくだけでよかった。
意外と簡単だった。

Lubuntu15.04にアップグレード

2015年7月10日

Lubuntu14.10を使っていたが、7日に 15.04にバージョンアップした。
以前に書いたことがあるが、使っているパソコン(GATEWAYのGT-5094j)は、Ubuntuの種類によってはインストールしても動かないことがあった。
Lubuntu14.10のインストール
Ubuntu13.10をインストールしたらOSが起動しなくなった

– – –

そのため、バージョンアップしたら動かなくなるかもしれないと思い、バージョンアップを促す画面が出るが実行していなかった。
そこで、Lubuntuが入っているハードディスク(同じパーティション)に入っているデータのうち、消えては困る物は全てバックアップを取った。
ブックマークと(オフラインにインストールしている)Wordpressのデータをエクスポートして、外付けのハードディスクに保存。

– – –

「システムツール」→「ソフトウェアの更新」を選択。
ソフトウェアをアップグレードしてそれが終わったら、やはりLubuntuのバージョンアップをすすめる画面が出た。
そのままバージョンアップを開始。
10:03に始めて、10:59に終わった。
1時間あればできるらしい。
OSはlubuntu15.04に変わったはずだが、OSのバージョンを調べると、なぜかUbuntu15.04と表示される。

今のところは問題なく使っている。

– – – – – – – –

参考
クロの思考ノート Linuxのディストリビューションとバージョンの確認方法をまとめてみた
http://note.kurodigi.com/linux-version/
Linuxでディストリビューションとバージョンを調べるコマンド

Linuxでlocalhostが何年間も見つからないままになっていた件

2015年7月6日

自分のパソコンをサーバーとして起動できるようにはなったが、どうしてもlocalhostがどこにあるか分からず、その状態が何年間も続いていた。

Webベースで動くプログラムを作った場合どこに置いたら良いか分からないから、プログラムを起動させることができないから、プログラミングの勉強自体が進んでいない状態だった。

先月30日になってようやくlocalhostを見つけることができた。

—–

Localhostがどこにあるかは、サーバーを起動させるプログラムは 何をインストールしたかによって決まるらしい。

私の場合XAMPPを使っているから、localhostはここになる。

/opt/lampp/htdocs

(xampp(lampp)フォルダの下にあるhtdocs フォルダ)

参考: http://web77.info/xampp/set/virtual.html

—–

プログラムを実行させることに成功したが、何度かエラーが出た。

今はLubuntuを使っているが、Windowsと違って実行するファイルを直接編集することができない。

ユーザーが編集できるフォルダにファイルを作って、コマンドを使ってコピーすることが必要になる。

コマンドを使いコピーするとき、黒画面で下矢印を押すと最近実行したコマンドが表示される機能 を活用した。

今回は何とか思ったようなプログラムを作って、正しく起動させることができた。

オフラインでWordPressが動いた

2015年6月1日

永年の夢が叶ったって感じ。
この間、UbuntuでWordpressをオフラインで動かすことに成功した。
今回はその手順を公開してみた。
これは私がやった方法であり、違う方法でも出来るかもしれない。

WordPressのプログラムは、PHPで書かれている。
データベースには、MySQLが使われている。
つまり、Wordpressを動かすには、PHPとMySQLが起動していることが必要になる。

そこでXAMPPをインストールすると、PHPとMySQL(Perlなども入っている)が簡単に使えるようになる。
XAMPPは、下のサイトからダウンロードした。
https://www.apachefriends.org/jp/index.html

Linux 向け XAMPP v5.6.8 (PHP 5.6.8)をダウンロードする。

コマンドラインを立ち上げる。
次にcdコマンドを使って、XAMPPのファイルがダウンロードされたフォルダに移動した。
それから以下のコマンドを実行する。

sudo su
(パスワードを要求される→入力したパスワードが正しければrootユーザーになる、これ以降の操作をするために必要)
chmod +x xampp-linux-x64-5.6.8-0-installer.run
(ファイルのパーミッションを変更して、実行することを可能にする。)
./xampp-linux-x64-5.6.8-0-installer.run
(インストール画面が立ち上がる→確認後ボタンをクリック)

XAMPPのインストールが完了すると、Webページが表示され、そこからWordpressのダウンロードが可能になっていた。
それが下のページ。
https://bitnami.com/stack/xampp?utm_source=bitnami&utm_medium=installer&utm_campaign=XAMPP%2BInstaller

rootユーザーになっていると、
ダウンロードされたファイルはいつもの所ではなく、rootのダウンロードフォルダに保存されていることがあった。
そのときは、cdコマンドを使ってそのフォルダに移動した。

以下のようにコマンドを入力して、さっきと同じように解凍していく。

chmod +x bitnami-wordpress-4.2.2-0-module-linux-x64-installer.run
./bitnami-wordpress-4.2.2-0-module-linux-x64-installer.run
(インストール画面が立ち上がる→確認してボタンをクリック)

次回からXAMPPを起動させるには、rootユーザーになって、以下のコマンドを実行する。
/opt/lampp/lampp start

ブラウザのアドレスバーに「localhost」と入力。
XAMPPのインストールが正しくできていれば、自動的にXAMPPを扱うためのページに移動する。

左側のタブで(上から3つ目の)「セキュリティ」をクリック。
ステータスが「安全」になっていない項目があったら、セキュリティ対策が必要になる。

その場合は、XAMPP セキュリティ のページの下の方にも説明があるが、下のコマンドを実行する。
/opt/lampp/xampp security
あとは質問にY(Yes)かN(No)かで答え、パスワードの設定が必要な場合にはパスワードを決めて入力するだけ。
パスワードを決める物が何件もあるので、分からなくならないよう気を付ける必要がある。

次に「localhost/wordpress」と入力。
Wordpressもインストールできていたら、Wordpressのブログが表示される。

下の画面からWordpressにログインする。
http://localhost/wordpress/wp-login.php

これでログインできれば、Wordpressをオフラインで使うことができる。

※インストールを実施したパソコンのOSはUbuntu14.10と、Lubuntu14.10である。

(参考URL)
WordPress 日本語ローカルサイト
http://ja.wordpress.org/
トップページの下部「インストール」と見出しがある所で、Wordpressの動作環境を確認できる。

Ubuntuでroot権限で作業をしたい(Qiita)
http://qiita.com/otaka/items/79e18883db4679e41c6e
ルート権限が無いため、実行できず。これを確認。

私はubuntu12.10を使っています そこでダウンロー(Yahoo! JAPAN 知恵袋)
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14101222769
.run形式のファイルを解凍する方法の解説。

Linuxコマンド一覧
http://www.k4.dion.ne.jp/~mms/unix/linux_com/chmod.html
chmodコマンドの使い方。

[ThinkIT] 第2回:5分でXAMPPをLinuxにインストール
http://thinkit.co.jp/cert/article/0701/12/2/2.htm
LinuxにXAMPPをインストールする方法。
(一旦電源を切ったあと起動する方法は2ページ目に書かれている。)

Lubuntu14.10のインストール

2014年11月13日

以前、Ubuntu13.10をインストールしたが、フリーズして使えなかった。

Ubuntu14.04をインストールしても同じだった。

Lubuntu14.04をしばらく使っていたが頻繁にフリーズして、しばらく使っていなかった。

そこで今回、Lubuntu14.10をインストールしてみた。

—–

まずはLubuntuのホームページを開いて、

http://lubuntu.net/

上のメニューでdownloadをクリック。

Release Notesを確認。
—–

そこに次のように書かれていた。

—–

Processor (CPU)
The minimum specification for CPU is Pentium 4 or Pentium M or AMD K8.

—–

今回インストールしようとしているパソコンは、GATEWAYGT-5094jである。
このパソコンのスペック表を確認する。

—–

http://kakaku.com/item/0010XA19187/spec/

—–

CPUは「Atholon 64X2 5200+」でAMD製である。
AMDであれば、これをインストールするのに、最低でもK8以上である必要があることが分かる。
K8は何か分からないから、「AMD K8」を右クリックしてGoogle検索してみた。
Wikipediaの記事が見つかったが、K8とはAthlon 64のことであることが分かった。

—–

http://ja.wikipedia.org/wiki/Athlon_64

—–

Athlon 64の中にAthlon 64X2もあって、
開いてみたらその中にAthlon 64X2 5200+があったから、
K8以上という条件は満たしていてインストール可能と判断した。

—–

http://ja.wikipedia.org/wiki/Athlon_64_X2

—–

Lubuntuのホームページでdownloadのページに戻って、
64ビットPC向けのISOファイル(Standard image disc)をダウンロード、
DVD-RWに書き込んだ。

—–

そのDVDをパソコンに入れ起動させてみた。
試しに使ってみたところ、ブラウザを立ち上げて2回ほどフリーズした。
これでは動かせないだろうと思いつつ、インストールしてみた。
その結果無事使うことができた。

—–

同じパソコン(GATEWAY GT-5094j)でこれまでUbuntuの色んなバージョンを試したきたが、結果は以下の通りだった。

Ubuntu10.04     使用可
Ubuntu11.10     使用可
Ubuntu12.04     使用可
Ubuntu13.10     フリーズ
Ubuntu14.04     フリーズ

Lubuntu14.04 使用可(ただし頻繁にフリーズする)
Lubuntu14.10 使用可

Ubuntu13.10をインストールしたらOSが起動しなくなった

2014年1月26日

Ubuntuの古いバージョンを消して、Ubuntu13.10をインストールしたら、何とOSが起動しなくなった。

no such device …

というエラーが出る。

そのパソコンはマルチブートシステムになっていて、前までWindows VistaとUbuntu(確かバージョン12.10)が入っていた。

———————

多分何度も色んな種類のLinuxのインストールを繰り返しているから、ブートローダーが2つ以上競合したりして、おかしくなっているのだと思う。

Ubuntuは消したのと同じかどうか分からないが、古い物を再びインストールしてみたが起動できない。

そう思ったらパソコンの起動中に、F10を押して無理やり起動するハードディスクを選択したら、一方は再びエラーが出て起動しなくなり、一方はそのあとOSを選択すれば起動する。

ただ、起動する場合もどちらのOSを選択しているかは、表示されないから確認できない。

——————

Vistaのシステム修復ディスクを起動してみようかと思ったが、私が使っているバージョンだとシステム修復ディスクを作成できないらしい。

—————-

今日の朝からやっているが、結局バージョンアップはできなかった。

明日から仕事だし、これからどうするか来週また考えないと。