※ ChatGPTを利用し、要約された質問です(原文:VBAマクロ 実行時エラーが出たり出なかったり)
VBAマクロ 実行時エラーが出たり出なかったり
2011/12/17 00:51
このQ&Aのポイント
VBAマクロを実行する際に、実行時エラーが出たり出なかったりする問題が発生しています。
実行時エラー '1004'というエラーが実行時にランダムに出現し、RangeクラスのPasteSpecialメソッドが失敗していることが原因です。
問題の範囲内での数式処理を行う際に、ファイルを開いてコピーし、その後閉じる処理を行っています。この処理の間に待ち時間を挿入することでエラーが発生しにくくなるかもしれません。
実行時エラー '1004'「RangeクラスのPasteSpecialメソッドが失敗」
というエラーが実行時に出たり出なかったりします。
常にエラーが出てくれればそれはそれで(?)いいのですが、普通に実行できることもあるので自分には対処できませんでした。。。
ある形式に沿って保存されている大きめのファイル(4つで1組)をマクロによって数式処理させるマクロとなります。
このデータが大きく、マシンパワーもあまりないため開いたり閉じたり、またコピーペーストにと各所で処理に多少時間が掛かるので、それが問題かなとも思い処理の間に待ち時間を挿入したりしてみたのですが、その際にはエラーが出る確率は有意に低くはなりましたが、まだ出てしまいます。
エラーした際にデバッグすると下のような処理の中でのPasteSpecialにハイライトが掛かっており、4つのうちどれでも起こりうるようです。
原因とその解決策を教えて頂きたいと思います。宜しくお願いします。
----------------------------------------
'対象のファイルを開いてコピー、その後閉じる
Workbooks.Open Filename:=ActiveWorkbook.Path & "\" & ActiveCell.Offset(i, 0).Range("A1").Value
Range("E1:E500000").Select
Selection.Copy
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
'myfileに4つを貼り付け(今回は省略してますがForで回して4つ出揃った後、それらで数式処理)
Workbooks(myfile).Activate
If j = 1 Then
Range("G3").Select
Selection.PasteSpecial
ElseIf j = 2 Then
Range("H3").Select
Selection.PasteSpecial
ElseIf j = 3 Then
Range("I3").Select
Selection.PasteSpecial
ElseIf j = 4 Then
Range("J3").Select
Selection.PasteSpecial
End If
質問の原文を閉じる
質問の原文を表示する
お礼
ご丁寧にどうも有難う御座いました。 お礼が遅くなってしまって申し訳ありませんでした。 エラーはまだ出てしまうので、他にも原因がありそうですがその頻度は確実に下がりました。