メモ/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経由で実行すると何事も無かったかの様にすんなり動く。

とりとめのないまとめ

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

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