[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ごくまれに「実行時エラー1004」か「rngクラスのcopypictureメソッドが失敗。」というエラーが出るのを何とかしたい。』(appletea)
現在vbaのコードを1時間に1回のペースで自動で回しています。
何回に1回という細かいところまではわかりませんが稀に以下のエラーが出ます。
・実行時エラー1004
・rngクラスのcopypictureメソッドが失敗。
できれば自分はかかわらず全自動でずっと回したいと思っています。
どなたか対処法を教えていただけますか。
vbaコード
Private Sub Workbook_Open()
Dim FileSize As Long Dim pic As ChartObject Dim picNameArray As Variant picNameArray = Array("\1.png", "\2.png", "\3.png", "\4.png", "\5.png") Dim rngArray As Variant rngArray = Array(Range("A1:H18"), Range("J2:P13"), Range("R2:X13"), Range("J15:P26"), Range("R15:X26"))
Dim saveFolderPath As String saveFolderPath = "自分のフォルダ"
For i = 0 To 4 ' 5回繰り返す Dim rng As Range: Set rng = rngArray(i) Dim picName As String: picName = picNameArray(i)
'■セル範囲を画像データでコピーする。 rng.Select rng.CopyPicture
'■指定したセル範囲と同じサイズのpicを新規作成し、保存する。 Set pic = ActiveSheet.ChartObjects.Add(0, 0, rng.Width, rng.Height) pic.Chart.Export saveFolderPath & picName FileSize = FileLen(saveFolderPath & picName)
'■picのFileSizeを超えるまでループする(画像データが出来上がったら終了する) Do Until FileLen(saveFolderPath & picName) > FileSize pic.Chart.Paste pic.Chart.Export saveFolderPath & picName DoEvents Loop
'■作成完了後、pic削除。 pic.Delete Set pic = Nothing Next i
'■上書き保存 ThisWorkbook.Save Application.DisplayAlerts = True Application.ScreenUpdating = True Application.Quit End Sub
< 使用 Excel:Excel2019、使用 OS:Windows10 >
CopyPictureで失敗ってことは「クリップボードと通信出来ませんでした」ってことになろうかと思うので、 対症療法的には「DoEventsして再チャレンジ」みたいな策を試してみたりとか...
Private Declare PtrSafe Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
'■セル範囲を画像データでコピーする。 rng.Select Do Dim nErr As Long, errCount As Long DoEvents Sleep 50 On Error Resume Next rng.CopyPicture nErr = Err.Number On Error GoTo 0 If nErr = 0 Then Exit Do errCount = errCount + 1 Loop Until errCount > 10 'リトライ回数の上限
(白茶) 2023/06/09(金) 18:22:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.