• ベストアンサー

連続で印刷すると画像が更新されない(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
質問者

お礼

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

関連するQ&A

  • Imageコントロール vba

    Imageコントロールをsheetに直接はりました。 sheetにはったイメージをExcelを開いたときにリンク先のものに変えたいです。 Image1_Click()を使えばクリックすると切り替えることができます。 Image1.Picture = LoadPicture("C:\イメージ.bmp") クリックせずにExcelをひらくと「イメージ.bmp」を参照して画像が変わるようにしたいのですが、どうしたらよいでしょうか。

  • イメージコントロールに画像をセット

    イメージコントロールに画像をセットしたいのですが、下記ではうまく動きません。 どうしたらよいでしょうか。 Private Sub Workbook_Open() ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _ DisplayAsIcon:=False, Left:=137.25, Top:=20.25, Width:=270, Height:= _ 154.5).Select Worksheets("Sheet1").Image1.Picture = LoadPicture("D:\My doc\My Pictures\11.jpg") End Sub

  • VB6のイメージコントロールでURLの画像を表示

    VB6のイメージコントロール、またはピクチャーコントロールで URLの画像を表示したいです。 ローカルに一度保存してLoadPicture関数を使うことでできそう ですが、ローカルに保存せずに表示することは可能でしょうか?

  • ExcelVBAのフォーム上のimageコントロールにWeb上にある画

    ExcelVBAのフォーム上のimageコントロールにWeb上にある画像を表示したいのですが、VBE上のプロパティで設定するときは表示されるのに、プログラム上で設定するとエラーが出ます。 Image1.Picture = LoadPicture(strURL)で設定しましたが無理でした。 どうやら、LoadPicture関数での設定では駄目なようです。 VBE上では出来るので、何かしら方法があると思うのですが、いかがでしょうか? よろしくお願いいたします。

  • エクセルで連続印刷

    エクセルで連続印刷をしたいです。 調べてみて、以下の過去の回答が私のしたいことであり、 真似してみました。 sheet2上の変化はまったくなく、最後の実行を押すと ✖400とでてきます。sheet2上には変化なしです。 教えてください。 (過去回答) Sheet1のセルAに以下のように名簿が並んでるとします。 氏名(これはタイトル) 宛先 氏名1 宛先 氏名2 宛先 氏名3 宛先 氏名4 宛先 氏名5 宛先 氏名6 宛先 氏名7 宛先 氏名8 宛先 氏名9 印刷は別のシート、例えばSheet2に印刷するとした場合は以下のマクロで行えます。 なお、Sheet2の印刷範囲は仮にA1:D7の範囲としています。 Sub Pri_Name()  Range("A2").Activate  Do While ActiveCell.Text <> ""   Worksheets(2).Range("A1").Value = ActiveCell.Text   Worksheets(2).Range("A1:D7").PrintOut   ActiveCell.Offset(1, 0).Activate  Loop End Sub 上記のマクロはAltキーを押しながらF11キーを押して表示されるマクロのエディタでF7キーを 押して出てきたところに貼り付けます。 印刷を実行する場合はAltキーを押しながらF8キーを押して表示されるマクロの実行指示画面で 「Sheet1.Pri_Name」が選択されている事を確認して、同画面にある「実行(R)」ボタンを押します。

  • エクセル マクロ フルパスから画像を読み込む

    数日前からマクロを勉強し始めた初心者です。 下の画像のような表を作っています。 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ■Sheet1 …「商品在庫一覧」 ■Sheet2 …「印刷用シート」※必要なものだけをSheet1から呼び出し、印刷用として同じシート上で並べ替える(図では‘行5’から下が印刷範囲です) ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ Sheet2のD列(D1~D3‥)に商品画像のフルパスを呼び出し、「写真を配置」のボタンを押すと、印刷範囲の‘行7’のセルに自動で画像が配置されるようにしたいです(‘あ’のパスの画像を‘い’のセルに)。 画像を配置するような関数はなく、マクロでなければ実現できないということで、似ている条件の構文をアレンジして‥と思ったのですが、マクロのことをきちんと理解できていないためうまくいきません。 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ■「D1」のパスから「A7」に画像を配置する構文を教えていただけますでしょうか。 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 初歩的なことを聞いてすみません。 完成までの残り時間があまりないもので、質問させていただきました。 どなたかお暇がありましたら、お願いいたします。

  • コントロールの挿入と同時に画像を表示する方法

    アクティブエックスコントロールのイメージコントロールの設置と同時に、 画像をそのコントロールに表示するvbaを作ってるのですが、 実行時エラー438が発生します。 Sub test() Dim objOLE As OLEObject Set objOLE = ActiveSheet.OLEObjects.Add("Forms.Image.1") With objOLE .Name = "Image" .Picture = LoadPicture("C:\1.gif") End With End Sub C:\1.gifのパスをブラウザで表示させることはできるので、ファイルは存在しているし、 パスは間違っていません。 .Picture = LoadPicture("C:\1.gif") をコメントアウトすれば正常にコントロールが挿入されます。 コントロールの挿入と同時に画像を表示する方法を教えてください。 ご回答よろしくお願いします。

  • エクセルで連続印刷

    添付画像のような入力データがsheet1にあります。C1セルに数値を入力すると、該当する「no」カラムを読み込んで、その行のデータをシートを変えて印刷用のデータを作成するようになっています。 印刷用のデータをC1セルの数値を1回ごとに変え、シートを移動してからctrl+pで印刷していましたが いちいち数値を入力するのが面倒になりました。 そこで数値を範囲で指定したいのです。 例えば、1から10という指定の仕方で自動プリントアウトする設定はできないかなと考えております。 こういうことは可能でしょうか よろしくお願い致します。

  • 画像を選択しシートに置いたimageコントロールで画像を表示しています

    画像を選択しシートに置いたimageコントロールで画像を表示しています。 その画像を別ブックにコピーしようとしているのですが、上手くいきません。 また、できれば画像を選択時に解像度の変更や圧縮を行い、サイズを小さくしたいと思っています。 ・EXCEL 2007 VBA ・画像枚数10枚 jpeg,bmp

  • Imageコントロールにグラフを表示させるには

    Excel VBAでフォームにイメージコントロールを配置して、そこにエクセルで作成したグラフ(グラフシート)を表示するようなプログラムは作成可能でしょうか? 例えば、 まずワークシートのデータを元にグラフ(グラフシート)を作成し、作成したグラフをフォーム上のイメージコントロールに表示させる一連の作業をVBAでプログラミングできるかどうかということです。 Userform1.MultiPage1.Image1.Picture = .........といった感じです。 もしくは、作成したグラフをgif形式の画像として特定のディレクトリなりフォルダに保存して、その画像ファイルを読み込むことで対応はできるでしょうか? よろしくお願いします。

専門家に質問してみよう