前提・実現したいこと
vbaのエラーで、原因と対策を教えて下さい。2件あります。
2件とも、Pasteプロパティで原因不明のエラーが出ます。
10回に1~3回程度で、上手く完了する場合の方が多いですが、同じ状況で実行してもたまにエラーが出ます。
1件目は、フォルダ内にある品番毎のフォルダから、合致する品番フォルダ内に格納されているjpeg画像を表示させるマクロです。
2件目は、1件目で表示させたjpeg画像を圧縮するマクロです。
いずれも、1度実行してエラーが出ても、再度実行すれば上手くいったりはしますが、1件目のvbaを2回起動するとが画像が
倍になってしまうので、そもそもエラーが出ないようにしたいです。
難しければ、画像を削除するマクロも用意しようかとは考えています。
他にも、エラーが出ても成功するまで繰り返す、とかも考えましたが、そもそものエラーに対して原因を把握して対処できるのが
望ましいです。
宜しくお願い致します。
発生している問題・エラーメッセージ
1件目のvbaエラー(2つのうちいずれかでエラーになります。) 1つ目 実行時エラー'1004': データを貼り付けできません。 2つ目(1件目のエラーはこちらの方が発生確率が高いです。) 実行時エラー'1004': PictureクラスのPasteプロパティを取得できません。 2件目のvbaエラー 実行時エラー'1004': データを貼り付けできません
該当のソースコード
■■■1件目のソースコード■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Sub 画像一括表示() Dim ファイル As String, xErr As Long Dim 最終行 As Long, 行 As Long 最終行 = Range("C" & Rows.Count).End(xlUp).Row For 行 = 13 To 最終行 Step 6 If Cells(行, 3) <> "" Then '商品コードが入力されていたら ファイル = "【ここでフォルダパスを入力しています。内容は割愛します。】" & Cells(行, 3).Value & ".jpg" Cells(行, 1).Select Cells(行, 3).Font.ColorIndex = 0 On Error Resume Next 'エラーが起きても処理を続行 ActiveSheet.Pictures.Insert(ファイル).Select xErr = Err.Number 'エラー番号取得 On Error GoTo 0 'エラー処理解除 If xErr = 0 Then 'エラーが発生していなければ With Selection .ShapeRange.LockAspectRatio = msoTrue .ShapeRange.Height = 195.96 .Copy '▼▼▼←1件目 1つ目のエラー箇所です。▼▼▼ .Delete End With ActiveSheet.Pictures.Paste.Select '▼▼▼←1件目 2つ目のエラー箇所です。▼▼▼ 'DoEvents 【修正メモ】たぶんいらないはず With Selection .ShapeRange.name = Cells(行, 3).Value .ShapeRange.IncrementTop 1.0714173228 * 2 End With Else Cells(行, 3).Font.ColorIndex = 0 End If Application.Wait [Now()] + 25 / 86400000 End If Next 行 Range("C2:H2").Select End Sub ■■■2件目のソースコード■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Sub 画像圧縮_実行() Application.ScreenUpdating = False Dim sp As Shape Dim l As Double Dim t As Double Dim n For Each sp In ActiveSheet.Shapes If sp.Type = msoPicture Then l = sp.Left t = sp.Top n = sp.name sp.Select Selection.Cut ActiveSheet.PasteSpecial Format:="図 (JPEG)", Link:=False, DisplayAsIcon:=False '▼▼▼←2件目のエラー箇所です。▼▼▼ 'DoEvents 【修正メモ】たぶんいらないはず With ActiveSheet.Shapes(ActiveSheet.Shapes.Count) .Left = l .Top = t .name = n End With End If Application.Wait [Now()] + 75 / 86400000 Next Application.ScreenUpdating = True MsgBox "画像圧縮が完了しました。", vbOKOnly End Sub
試したこと
処理の合間に待機時間やエラー箇所直後にDoeventsを挟んでも直りませんでした。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/06 09:32
2021/04/07 09:40
2021/04/07 10:17
2021/04/08 01:01
2021/04/20 05:39