Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : Excel 2010)
写真の連続エクスポートで白紙が出力される
投稿日時: 18/03/09 10:10:25
投稿者: まっちゃ

次のようなコードを作成しました。主要部の抜粋です。
単独では正常に動作しますが、連続でループ処理すると時々、白紙のJPEGになってしまいます。
タイマーをどこかに入れればいいのかもしれませんが、最小限にしたいです。
どなたか助言をよろしくお願いいたしますm(__)m
 
    With Worksheets(2)
        ' ワークシートの図を全て消去する
        For Each shp_wk In .Shapes
            shp_wk.Delete
        Next
        ' 指定のファイルを図として挿入する
        Set pic = .Pictures.Insert(str_TargetFile)
        ' 0.8倍にリサイズする
        pic.ShapeRange.ScaleWidth 0.8, msoFalse, msoScaleFromTopLeft
        ' 写真を貼付けるフレームを挿入する
        Set shp_Frame = .Shapes.AddChart
    End With
    ' フレームの高さ、幅を写真に合せる
    With shp_Frame
        .Height = pic.Height
        .Width = pic.Width
    End With
    ' 写真をフレームにカット&ペーストし、JPEGとしてエクスポートし保存する
    pic.Cut
    With shp_Frame.Chart
        .Paste
        .Export str_ResizeFile, "jpg"
    End With

回答
投稿日時: 18/03/09 14:52:38
投稿者: WinArrow
投稿者のウェブサイトに移動

 
>連続でループ処理すると
  
掲示のコードには、ループが見当たりませんが、
Export する前にWAITさせればよいと思います。
 

投稿日時: 18/03/09 16:37:43
投稿者: まっちゃ

WinArrowさん、ご回答ありがとうございました。
 
Pasteが完了しないうちにExportしているいう事ですね。
 
>Export する前にWAITさせればよいと思います。
 
WAITとは例えば下記のようなタイマーのことでよろしいでしょうか?
 
For i = 1 To 1000
        DoEvents
Next
 
申し訳ありませんが、自宅のPC環境では再現できないので、
来週月曜日以降トライしてから結果を報告させていただきます。

回答
投稿日時: 18/03/09 16:59:38
投稿者: WinArrow
投稿者のウェブサイトに移動

>WAIT
は、
 
Application.Wait Now() + TimeValue("0:0:1")
 
意味、1秒待つ。
秒数は、試してから、適宜変更してください。
 

投稿日時: 18/03/09 17:06:35
投稿者: まっちゃ

なるほど、文字通りWaitという命令があるんですね。
ありがとうございました。m(__)m

投稿日時: 18/03/12 16:55:27
投稿者: まっちゃ

WinArrowさん、ご報告が遅れ申し訳ありませんでした。
 
PasteとExortの間に1秒間のWAITを挿入し解決しました。
 
写真フォルダをコピーしてリサイズするマクロが完成しました。
ありがとうございました。m(__)m