LibreOfficeのCalcやBaseで、マクロが完全に削除できなくてセキュリティ警告が出てしまう。
そんなときの対処法、というか備忘録。
「このドキュメントにはマクロが含まれています。」
マクロにはウイルスが含まれている事があり・・・と続くわけですが、
このセキュリティ警告が消せなくなりました。
Baseを使っていたときの事です。
原因
作成した.odbファイルの中に、フォルダが残ってしまっているのが原因。
(環境:Mac & LibreOffice 5.2.4.2)
例えば、
ツール > マクロ > マクロの管理 > JavaScript
からライブラリを作成しようとしたとしよう。
うん、でけた。
さらに「作成」からマクロを作成することができる。
で、これらを削除する。
該当項目を選択して削除ボタンを押す。
もちろん問題なく削除できる。
と・こ・ろ・が・だ。
この時、マクロやライブラリは削除されても
Scripts/javascript/
という、ファイルを置く為に作られたフォルダ(/javascript/)が消される事は無い。
削除しようとしても、
エラーが出て削除できない。
「選択したオブジェクトを削除できませんでした。」
非常にストレスが溜まる。
マクロのセキュリティレベルを下げれば警告は出ないが、根本的な解決にはなっていない。
勿論セキュリティ上も宜しくない。
しかしなかなか情報が見つからない。
Excelではモジュール単位での解放を行えば良いとあるが、そんな項目はLibreOfficeでは見つからない。
ちなみに
マクロの管理 > LibreOffice Basic
で作成した場合は「管理」ボタン からのモジュールタブで削除が可能。
この場合は警告が出続ける事は無い。
なんとかしたいと小一時間。いやもっとか。
最新版にアップデートしてみたり、
いろいろ探しまわってようやく冒頭に記した原因を把握。
対処法
(※Macでの対処法になります。windowsとかでも参考になるかな?そもそもこんな不具合はない?)
ここに a.odb というファイルがあるとします。
ちなみに.odbファイルは名前を変えた.zipファイルらしく、拡張子を変えればそのまま解凍できます。
が、解凍する必要はありません。
ターミナルを開いて、
unzip -l a.odb
と打ってみましょう。
-l はファイル一覧を表示するオプションです。
すると中に
Scripts/javascript/
があるのが分かります。
これを、
zip -d a.odb Scripts/javascript/
で削除します。
これでマクロのセキュリティ警告は消える筈です。
フォルダは BeanShell、Pythonなど作成するものによって変わります。
まとめ
LibreOffice BASEでデータベースを構築しようとしたのです。
あまり使った事がなかったので、試行錯誤しつついじってみたのですが、
ひょんな事からマクロを追加してしまったのでした。
勿論すぐに消すつもりでしたし、出来る筈でした。
それがこんな面倒くさい事になろうとは・・・。
疲れた。
もしかして他に方法あるのかな。
だからあまり問題視されてないのかも?
コメント