[[20230418162302]] 『実行時エラー 1004 rangeクラスのcopypictureメソ』(ブルーハム) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『実行時エラー 1004 rangeクラスのcopypictureメソッドが失敗しました。と一定確率で出るのを何とかしたい』(ブルーハム)

ほとんどが実行できますが時折エラーが出て中断されます。

エラー時の文章:実行時エラー 1004 rangeクラスのcopypictureメソッドが失敗しました。

エラーが起きる場所も毎回バラバラで、本来はタスクスケジューラで毎時自動で実行したいものなのでエラーが何とか起きないようにしたいです。
エラーが起きる場所は主に各範囲のpic.Chart.Pasteか、
各範囲それぞれのexportRange2.CopyPicture Appearance:=xlScreen, Format:=xlPicture
この部分です。
助けてほしいですお願いします。

追伸:本来は範囲11まである分ですが文章の量的に範囲3以降は削除しています。もしかしたら消し忘れている部分があるかもしれないので、あったら申し訳ないです。

Private Sub Workbook_Open()

    Dim FileSize As Long
    Dim pic As ChartObject
    Dim picName As String
    Dim picName2 As String
    Dim picName3 As String
    Dim rng As Range
    Dim exportRange2 As Range
    Dim exportRange3 As Range
    Dim wb As Workbook: Set wb = ThisWorkbook
    Dim ws As Worksheet
    Dim path As String
    Dim retryCounter As Integer
    path = "C:\???\???\???\???\???\???\"

    Application.DisplayAlerts = False

    Application.ScreenUpdating = False

    For Each ws In Worksheets
        Select Case ws.Name

            Case "報告書"
                picName = path & "image" & "1.png"
                Set rng = ws.Range("D4:N52")

                Application.Wait (Now + TimeValue("0:00:01"))
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture

                Set pic = ws.ChartObjects.Add(0, 0, rng.Width, rng.Height)
                pic.Name = "ChartObject3"
                pic.Chart.Export picName
                FileSize = FileLen(picName)

               If FileLen(picName) <= FileSize Then
                    pic.Chart.Paste
                    pic.Chart.Export picName
                End If

                pic.Delete
                Set pic = Nothing

            Case "グラフ"
                '範囲1
                picName2 = path & "image" & "2.png"
                Set exportRange2 = ws.Range("A1:Y35")

                Application.Wait (Now + TimeValue("0:00:01"))
exportRange2.CopyPicture Appearance:=xlScreen, Format:=xlPicture

                Set pic = ws.ChartObjects.Add(0, 0, exportRange2.Width, exportRange2.Height)
                pic.Name = "ChartObject2"
                pic.Chart.Export picName2
                FileSize = FileLen(picName2)

                If FileLen(picName2) <= FileSize Then
                    pic.Chart.Paste
                    pic.Chart.Export picName2
                End If

                pic.Delete
                Set pic = Nothing

                '範囲2
                picName3 = path & "image" & "3.png"
                Set exportRange3 = ws.Range("A36:Y70")

                Application.Wait (Now + TimeValue("0:00:01"))
exportRange3.CopyPicture Appearance:=xlScreen, Format:=xlPicture

                Set pic = ws.ChartObjects.Add(0, 0, exportRange3.Width, exportRange3.Height)
                pic.Name = "ChartObject3"
                pic.Chart.Export picName3
                FileSize = FileLen(picName3)

               If FileLen(picName3) <= FileSize Then
                    pic.Chart.Paste
                    pic.Chart.Export picName3
                End If

                pic.Delete
                Set pic = Nothing

            Case Else
                GoTo NextSheet
        End Select

NextSheet:

    Next ws

    ThisWorkbook.Save
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.Quit
End Sub

< 使用 Excel:Excel2010、使用 OS:Windows10 >


なんでWaitなのかな、しかもコピーする前に
と思った。
ただそう思っただけ。
(ジョア) 2023/04/18(火) 17:13:56

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.