• ベストアンサー

連続で印刷すると画像が更新されない(Excelのイメージコントロール)

いつもお世話になります。 エクセルのイメージコントロールを使用しているのですが、 なかなかうまく行かないので、アドバイスをお願いします。 シートにイメージコントロールをいくつか(8個)配置しました。 マクロで LoadPicture を使用し画像を読み込ませました。 Rangeで範囲を指定して印刷しました。 一旦、Sheet1.Image1.Picture = Nothing と開放しました。 そのイメージコントロールに別画像を LoadPicture させました。 同様に印刷させましたが、画像は最初に読み込ませたもののままです。 マクロが終了して見ると、最新の画像に更新されているのですが、 印刷したものでは(プリビューでも)更新されません。 Redraw させたり Refresh させるコマンドはないかと思いましたが見つかりません。 同じマクロで画像のコメントをセルに表示させているのですが、 こちにはどんどん更新しています。 画像だけが、最初に読み込んだ画像のままで印刷されてしまいます。 印刷範囲は常に同じです。 原因なり対処法なりをお教え下さいますようお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんにちは。 原因はお分かりのようなので回避策を。。 再描画させてから印刷させる為にPrintOut (or PrintPreview)の前に次の2行を挿入  For i = 1 To 1000: DoEvents: Next i  Application.Wait Now() + TimeValue("00:00:03") Forのカウンターの上限は適宜変更。 また、Application.Waitはなくても上手くいくとは思いますが念のため。。 DoEvents,Waitはご自分でお調べください。 以上です。

kopepe
質問者

お礼

ありがとうございます。 一旦戻る方法か、待って様子を見る方法を考えてみていました。 DoEventsは思いつきませんでした。 おかげさまで解決できました。 また機会がございましたら、よろしくお願い致します。

その他の回答 (2)

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.3

こんにちは。 No.2さんのコードで解決だと思いますが、 経験上、 DoEvents: DoEvents の2回で大丈夫なような気もします。 (Application.Waitなし) WorksheetにActiveXコントロールを貼り付けて似たような事をする場合は 一度OSに制御を渡さないといけないという事なのでしょうね。 DoEvents1コじゃなぜダメなのかは知りませんけど。^ ^;

kopepe
質問者

お礼

ありがとうございます。 確かに2回で大丈夫でした。 試しに1回でもやってみましたが、本当ですね。 グリッドか何かで、2回Updateしないと更新してくれないものもあったような気がします。 ペアでないと寂しいのでしょうか。 助かりました。 またこんな機会がありましたら、よろしくお願い致します。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.1

直接関係があるかは解りませんが、参考までにサイトをご紹介します。 再描画の前にメッセージボックスの表示が必要かもしれません。

参考URL:
http://support.microsoft.com/kb/242017/ja
kopepe
質問者

お礼

早速の回答ありがとうございます。 バグの殿堂マイクロソフトさんのページを見てみました。 サブに行きっぱなしではなく、一旦戻るかしないとダメなんですね。 たしか、プログレスバーでも、そんな現象があったような気がします。 これからもよろしくお願い致します。