メモ/VBAからImagemagick の「convert」を使おうとすると何故かコケる(´ε`;)ウーン…

memo_top

根本的な解決には至っていないけど忘れると厄介なのでメモっておきます。

Imagemagick は事前にインストールしている状態でパスも通っている状態。

実際にコマンドプロンプトからコマンドラインを打ち込むと正常に動く。

convert -resize 300x _test.jpg _test_s.jpg
mogrify -resize 800x> -unsharp 2×1.4+0.5+0 *.jpg

こんな感じで。

VBA からは Wscript.Shell を使用してコマンドプロンプトと同じように実行しみた。

もちろん、ファイルパスに関してはフルパスにしてあります。

が、VBA 経由だと動かない。

エラー・・・出てるようだ。

「無効なパラメーターです」

実際に VBA から実行されるコマンドをデバッグプリントで表示させてそれをコマンドプロンプトに貼り付けて実行してみる・・・。

動くwwなんでだよwww

ここで mogrify は正常に動くのに convert が動いていない事に気づく。

Windows にも「convert.exe」が存在する

そういえば Windows にはパーティション関連(だった気がする)の実行ファイルである「convert.exe」があった。

しかも System32 内にあるからこっちが優先されてエラーになっているっぽい。

ちょっと調べてみると環境変数の順番で調整する方法もあるようだったので調整してみたけど、自分の環境ではうまくいかなかった。

競合していて動いていないのは確実の様なので強硬手段にでる。

ファイル名書き換えて回避

力技。というか妥協。

自分用のツールだし、「Imagemagick」自体この為にインストールしたからという言い訳を頭のなかで繰り返しながら「Imagemagick」をインストールしたフォルダに行き「convert.exe」を「convert2.exe」にそっとリネーム。

このあと VBA 経由で実行すると何事も無かったかの様にすんなり動く。

 

とりとめのないまとめ

自分しか使わないから・・・という理由で力技で回避してますけど・・・こういうのすごく気になります。

機会があればちゃんと直したい・・・ですが、忘れそうなのでメモにしました(´ε`;)ウーン…