仕事で使っていた Excel のマクロを起動すると「セキュリティに影響を及ぼす可能性のある問題点が検知されました」というメッセージと共に、Excel が強制終了されるようになってしまったので、マクロの内容を見直してみました。
10数行程度の短いマクロですが、どうやらアンチウィルスの振る舞い検知に引っかかってしまったようです。
怪しいのはWscript.Shell
経由でブラウザを開く処理なので、この部分をShell
経由でfirefox.exe
(僕の標準のブラウザ)を直接呼出すように変更してみたところ、うまく動くようになりました。逆にこれだけでアンチウィルスをすり抜けられるのもかなり謎ですね。
↓
Visual Studio 2019 で Hello World を作ってアンチウィルスにひっかかった時もそうでしたが、こういうアンチウィルス系の誤動作は対処が面倒で困ります。
VBA で JSON を扱うことができる VBA-JSON が便利だったのでメモ。
VBA-tools/VBA-JSON: JSON conversion and parsing for VBA
JSON conversion and parsing for VBA (Windows and Mac Excel, Access, and other Office applications). It grew out of the excellent project vba-json, with additions and improvements made to resolve bugs and improve performance (as part of VBA-Web).
今回はサンプルとしてopenBD の API を叩いて、ISBN から書名、著者名、出版日、出版社名、価格を取得するコードを書いてみました。
以下のように非常にシンプルなコードで実現できます。
実行方法は適当なセルに ISBN を入力し、その範囲を選択した状態でマクロを実行するだけです。日本語も問題なく取れていますね。
少し前から VBA で書いたマクロを動かそうとすると「プロシージャの呼び出し、または引数が不正です。」というエラーが出るようになってしまって困っていたのですが、どうもこれは今月の Windows Update のバグを踏んでしまっていた模様。
おとなしくアップデートを待てば良いみたいですが、この手の定例外パッチは最新版の Windows へのリリースが一番遅いのはなぜなんでしょうね。
2019年8月の月例更新プログラムに問題、VB6/VBA/VBScriptアプリ・マクロが応答不能に - 窓の杜
「Visual Basic 6(VB6)」で作成したアプリケーションや「Visual Basic for Applications(VBA)」で作成したマクロ、「Visual Basic Scripting Edition(VBScript)」で作成したマクロやアプリケーションが応答しなくなり、“invalid procedure call error.”というエラーが発生することがあるという。
Excel のシートをマクロから PDF 出力する方法がないかと思って調べてみたら、簡単に実現できることが分かったのでメモ。
考えたら最近の MS Office は Acrobat などがなくても PDF 出力できるようになっていますからね。
† サンプルコード
以下のマクロを使うと、アクティブなシートをデスクトップに hoge.pdf という名前で出力します。
その昔、「MS Accessでクエリの一括実行」というエントリを書いたことがありました。でも、これは僕はVBが全く使えなかったためなんですが、そんな僕のエントリを見て、VBAを作ってくださった方がいました。
[MS Accessでクエリの一括実行 その2 の続きを読む]