質問する
0

Private Sub Workbook_Open()が動かない。

質問日 2018-12-02 14:27:18 +0100

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

エクセル(32bit)で使用していたマクロを、リブレオフィス(32bit)で使用しようとしていて、壁にあたっています。完全な初心者です。JavaScriptなども書けません。(会社が一斉にリブレオフィスに移行したから)

ネットで何処を探しても該当する情報が得られずヤフー知恵袋でも質問していますが解決に至りません。情報を探しているうちにこのページと出会いました。

3つ悩んでいるのですが、別々のスレッドで質問させていただきます。
ここでは「ブックをオープンした時に開くメッセージボックス」に関する質問です。

以下のマクロが、エクセルでは問題なく動いていました。

'以下の最初の2行はリブレ側だけに追加
Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1

Private Sub Workbook_Open()
MsgBox ("使用説明")

End Sub

これがファイルオープン時に動かないのです。
もちろんリブレのマクロ設定は済ませてあります。
オープン時にウィンドウが開いてマクロ有効化のボタンを押すのですが、
メッセージボックスが開いてくれません。

いろいろ調べてたら、
<ツール→カスタマイズ→イベント>で割り当てられるような事を
リブレのオープンヘルプ見つけたのですが、
ヘルプの内容とは違った状態に直面しました。

画像の説明

ヘルプの記載では本体だけでなく、
文書にもマクロを割り当てられるようなことが記載されていますが、
出てこないのです。

よろしくご指導の程をお願いします。
これ以外にも、別のスレッドで追加で2つ質問させていただきます。
そちらのほうも、宜しくご教授願えれば幸いです。

edit retag flag offensive close merge delete

1 Answer

1

回答日 2018-12-03 23:36:54 +0100

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

この件、状況把握としての進展ですが、
「32bit版のリブレのバグ」ではないかと判断せざるを得ません。
ただし「64bit版でも操作の手順で状況が変化」します。
たぶん「これもリブレのバグ」だと思います。

"LibreOffice_6.0.7_Win_x86.msi"

実は試しに、64bit版に「戻して」みました。
それでも最初は(自分なりに何をやっても)駄目でした。

"LibreOffice_6.0.7_Win_x64.msi"

ここで少し、余談を挟みます。
そもそも64bit版では、エクセルのVBA で使用できてた "ScriptControl" が使えませんでした。
私の過去の環境は "Excel2007(32bit版)" で、一部のファイルで "ScriptControl" を使っています。
これは VBA から JavaScript 等を呼び出して、VBAにはない機能を使えるものです。

最初にインストールしたリブレが64bit版で、それらがまるで動かず嵌ってしまい。
数日ほど悪戦苦闘した結果、ネット情報で64bit版では "ScriptControl" が動かないと知り、
泣きそうな気分に襲われながら32bit版リブレに入れ替えた経緯があります。
だから64bit 版は本音では使いたくありません。全部、作り直さなければならなくなります。

話を戻します
ところが、そしてこれは偶然なのですが、
特定の手順を踏んで<イベント画面>に到達すると、その時だけは
リブレのヘルプにあるように、"マクロの割り当て" が "ブックに対してできる" ことを発見しました。

これに気がつくのに、まるまる3日ほどかかりました。
今回はもう吐きそうでした。。気がつくまでは自分のスキル不足だと思っていたので。。

画像の説明

説明します。というか、報告します。

リブレの場合、マクロを割り当てるイベントタブに到達するルートが
3種類用意されています。

ちなみにエクセルの場合(=私の2007の場合)こんな概念はありません。
エクセルではVBA画面で、各ブックの中の

Microsoft Excel Objects
ThisWorkbook

を開いて
Private Sub Workbook_Open()
MsgBox ("表示させたい文章")
End Sub

さえ書き込めば、
ファイルオープン時にメッセージボックスを表示してくれます。

ですから、イベントタブにバグ?のある状況下で、
それがバグだとは気がつかずに悩み続けていましたので、
脳味噌グチャグチャ状態でした。

リブレでマクロを割り当てるイベントタブに到達するルートは
以下の3種類です。


※標準画面から直接
ツール→カスタマイズ→イベントタブ

ちなみに通常は、上記のルートを使用しないと思います。
以下の②か③になると思います。
何故ならこれは、マクロを作成して使用する為の作業だからです。


※標準画面から
ツール→マクロ→マクロの管理→LibreOffice Basic画面
に行って、そこでマクロを作成した後、

※マイマクロ&ダイアログ-LibreOffice Basic画面から
ツール→カスタマイズ→イベントタブ

或いは、


※標準画面から
ツール→マクロ→マクロの管理→LibreOffice Basic画面
に行って、そこでマクロを作成した後、

※マイマクロ&ダイアログ-LibreOffice Basic画面から
ツール→マクロ→マクロの管理→LibreOffice Basic-マクロ画面(混乱しそうにそっくりな名前)
に行って、各種のマクロが記載されている場所を確認した後、

※LibreOffice Basic マクロ画面から、
記録先の選択→割り当てボタン→イベントタブ

となります。

これに気がつくまで数日を要しました。
リブレでは、上記の①のルートでイベント画面に到達しないと、
ブックに対するマクロの割り当てができないのです。

ヘルプの何処にもそのような説明が見当たらないので、
たぶんバグだろうと判断しています。

画像の説明

②③のルートからイベントタブに行くと、
保存先に出現するのは、画像のように"LibreOffice" のみ。つまり本体のみです。
これでは現実には使えません。全てのブックに対して同じ挙動を与えてしまいます。
ブックごとに違うマクロを使えなければ(多くの場合)意味がありません。
ちなみに64bit版に戻してからこれに気がついたので、
もしかしたら32bit版でも、この手順ならブック名が出現するかもしれません。

"ScriptControl" の問題があるので、どうせ戻さねばならないのですが、
現時点では放心状態で(気持ちの整理をするためにこれも書いていますので)
まだ試していません。。
戻して動かせなかったら、どうしようと。。

edit flag offensive delete link もっと
ログイン/サインアップして回答する

質問ツール

2 followers

Stats

Asked: 2018-12-02 14:27:18 +0100

Seen: 230 times

Last updated: Dec 04 '18