« 『サラミミラノ』を買ってみた。 | トップページ | ちょっとスカイツリーに行ってみた。 »

2014年2月 2日 (日)

意外な伏兵…、ウイルスバスターにもてあそばれる!

『Microsoft office Home and Business 2010』で
『Microsoft Excel』のマクロを開発しているのだが…

毎回外部コマンドで画像を作ってシートに貼る処理を作った所…

プリエンプティブマルチタスク で画像が作成される前に
画像を読み込んでしまい、内容と画像の整合性が取れない不具合が…。(泣)

従って、その都度画像ファイルを削除し、
作成を確認して張り付ける処理にした。

大雑把にこんな感じ…

>'-----------------------------------
>' 画像の作成
>Shell ThisWorkbook.Path & "\xx.exe " & Value
>
>'-----------------------------------
>' 画像ファイル作成が間に合わない場合には、ここで待つ。
>Do While Dir(GraphicFilePath) = ""
>    Application.Wait Now + TimeValue("0:00:01")
>Loop
>
>'-----------------------------------
>' 画像貼り付け位置の指定
>' 面倒なのでキーワードのあるセルをセレクトする。
>Set FindItem = WS.Cells().Find(what:="■画像■")
>FindItem.Select
>
>'-----------------------------------
>' 画像ファイルの貼り付け
>Set Picture = WS.Shapes.AddPicture(GraphicFilePath, False, True, Selection.Left, Selection.Top, 0, 0)
>
>'-----------------------------------
>' 貼り付けた画像ファイルの削除
>Kill GraphicFilePath
>
>'-----------------------------------
>' PDFファイルの作成
>ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=PdfFileName, Quality:=xlQualityStandard

で、これで上手く行った…。

だが、暫くして、今度は、こんなエラーが!!!

>このファイルのインポート中にエラーが発生しました。

20140129001

…これは、一体…

しかし、これは、意外に簡単に原因が特定できた。

と言うのも不具合の直前に『ウイルスバスター』をインストールしたのだ。

で、こう推測する。

『Excel』が画像を読み込みに行くが、
『ウイルスバスター』がチェックのためファイルをロック。
このため『Excel』が画像を読み込めずにエラーとなる。

実際、『ウイルスバスター』を停止した状態では、エラーが発生しない。
なので、状況証拠で『ウイルスバスター』が黒だ!

マクロを実行する場合には、カットするしかないかも…。
その辺は、そのPCをどう使うかの運用面での判断が大きいかもしれない。

さて、対応策は、あるのか?

ちなみに、ウイルスバスターを入れたから、ゲームが出来なくなるとの話もない…。
となると、リアルタイムチェックが、読み込みで無く、書き込み時のチェックではないだろうか。

書き込み実行直後にファイルをロックしウイルスチェックを行う流れか…。
ならば、作成チェックを通って、読み込みでコケルのもうなずける。
すると、毎回、読み込めるかを確認し無くてはならないのか?

実は、読み込み可能かのチェックは、想像以上に面倒臭い…。

兎も角、作成直後に若干待てば良いのでは?
ならばと言う訳で、こんな風にしてみた。

>'-----------------------------------
>' 画像ファイル作成が間に合わない場合には、ここで待つ。
>'Do While Dir(GraphicFilePath) = ""
>    Application.Wait Now + TimeValue("0:00:01")
>'Loop

つまり、必ず1秒待つようにしたわけだが…
これで、エラーが出なくなりましたよ。

エラー処理って面倒なんだよな…。
特にVBAは…。

|

« 『サラミミラノ』を買ってみた。 | トップページ | ちょっとスカイツリーに行ってみた。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108365/59067545

この記事へのトラックバック一覧です: 意外な伏兵…、ウイルスバスターにもてあそばれる!:

« 『サラミミラノ』を買ってみた。 | トップページ | ちょっとスカイツリーに行ってみた。 »