目次
を扱う中で、最もよく遭遇する問題のひとつです。 VBAでのコピー&ペースト は ランタイムエラー1004 : RangeクラスのPasteSpecialメソッドに失敗しました。 この記事では、このエラーの背後にある可能性のある理由とその解決方法を、適切な例と図解を使用して説明します。
練習用ワークブックをダウンロードする
この練習用ワークブックをダウンロードして、この記事を読みながらエクササイズしてください。
PasteSpecialメソッドの失敗.xlsmRangeクラスのPasteSpecialメソッドが失敗する:原因と解決策
さて、本題です。 このエラーの背景にはどのような理由が考えられるか、そしてその解決策を考えてみましょう。
理由1:何もコピーせずにPasteSpecialメソッドにアクセスできる。
これは、エラーの背後にある最も一般的な理由です。 つまり、アクセスしようとしているのが ペーストスペシャル メソッドをコピーすることなく使用できます。
明確に理解するために、以下を確認してください。 ブイビーエー のコードで表示されます。
⦹ VBAコードです。
Sub PasteSpecial_Method_of_Range_Class_Failed() Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
ここでは ペーストスペシャル 方 ブイビーエー を表示します。 ランタイムエラー1004 を実行すると
⧭ ╱解決。
この問題を解決するには、まず、セルの範囲をコピーして、その範囲にアクセスする必要があります。 ペーストスペシャル メソッドを使用します。
Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
このコードを実行すると、範囲内の数式が貼り付けられます。 B3:B5 アクティブなワークシートの範囲を選択します。
続きを読む ワークシートクラスのPasteSpecialメソッドが失敗する(理由と解決策)
理由2:PasteSpecialメソッドにアクセスするとスペルエラーが発生するため。
これは、エラーの背後にあるもう一つの一般的な理由です。 つまり、アクセスするために ペーストスペシャル メソッドの引数にスペルミスがある場合。
以下をご覧ください。 ブイビーエー のコードを明確にする。 ここでは、引数のスペルミスを修正した。 xlPasteAll .
⦹ VBAコードです。
Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlPaseAll End Sub
このコードを実行すると ランタイムエラー1004 .
⧭ ╱解決。
解答は簡単です。 もうお分かりだと思いますが、すべての引数のスペルが正しく作られていることを確認すればいいのです。
そして、エラーは自動的に消えます。
続きを読む エクセルで特殊コマンドを貼り付ける方法(5つの適切な方法)
類似の読み物
- Excel VBA: 範囲を別のワークブックにコピーする
- Excel VBAで値をコピーして次の空白行に貼り付ける(3例)
- VBAのPasteSpecialを適用してExcelのソース書式を維持する
- エクセルで複数のセルに同じ値をコピーする方法(4つの方法)
- 条件に基づいて行を別のワークシートにコピーするExcel VBA
理由3:コピー後に新しいワークブックを開くと、コピー/ペーストモードがキャンセルされるため。
このエラーの背景には、もう一つ重要な理由があります。 それは、ペーストする前にコピー&ペーストモードをキャンセルするような操作をすることです。
次のコードを見て、よく理解してください。
⦹ VBAコードです。
Sub PasteSpecial_Method_of_Range_Class_Failed() Workbooks("Workbook1.xlsx").Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:= ThisWorkbook.Path &"\" & "Workbook2.xlsx" Workbook2.Activate Workbook2.Unproect Workbook2.Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAllエンド・サブ
ここでは、範囲をコピーしています。 B3:B5 から シート1 というワークブックの ワークブック1 .
そして、新しいワークブックである ワークブック2 を同じフォルダにコピーして、コピーした範囲を範囲に貼り付けようとしたところ B3:B5 の シート1 そのワークブックの
しかし、このコードを実行すると RangeクラスのPasteSpecialメソッドに失敗しました。 エラー、なぜなら新しいワークブックを作成した瞬間に コピー&ペーストモード は中止となります。
⧭ ╱解決。
この問題を解決するために、まず、次のような新しいワークブックを作成するコードを書き出します。 ワークブック2 .
次に、有効化するための行を挿入します。 ワークブック1 をクリックし、そこから目的の範囲をコピーします。
そして最後に、アクティベート ワークブック2 をクリックし、コピーした範囲をそこに貼り付けます。
Sub PasteSpecial_Method_of_Range_Class_Failed( Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:= ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbooks("Workbook1.xlsx").Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Workbook2.Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAll End Sub.
次のコードを実行すると、範囲がコピーされます。 B3:B5 から シート1 の ワークブック1
に貼り付けてください。 シート1 という新しく作成されたワークブックの ワークブック2 .
⦹注意してください。
当然ですが、忘れてはいけないのが ワークブック1 を開きながら、コードを実行します。
続きを読む Excelでマクロを使わずにコピー&ペーストを無効にする方法(2つの条件付き)
理由4:Application.CutCopyModeをFalseにすると、コピー/ペーストモードがキャンセルされるため。
最後に、エラーが発生する別の理由があるのかもしれません。 をオフにすることがあります。 Application.CutCopyMode にアクセスする前に間違えて ペーストスペシャル メソッドを使用します。
あまり一般的な方法ではないですが、それでも長い行数を扱うときには、この方法をとることがあります。
次のコードを見て、よく理解してください。 ここでは、範囲 B3:B5 が、キャンセルされました。 カットコピーモード をクリックしてから貼り付けてください。
⦹ VBAコードです。
Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Application.CutCopyMode = False Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub
コードを実行すると RangeクラスのPasteSpecialメソッドに失敗しました。 のエラーが発生しました。
⧭ ╱解決。
もうお分かりだと思いますが、とても簡単です。 カットコピー モードをオフにします。
だから、正しい ブイビーエー のコードになります。
Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Range("D3:D5").PastePasteSpecial Paste:=xlPasteAll End Sub
範囲をコピーします B3:B5 の上に貼り付けてください。 D3:D5 を、何の苦労もなく実現しました。
続きを読む VBA Paste SpecialでExcelの値や書式をコピーする(9例)
覚えておきたいこと
ここでは、「Select」での作業中に遭遇する可能性のあるトラブルのみを紹介しました。 ペーストスペシャル メソッドで VBAです。 を知りたい方は、こちらをご覧ください。 ペーストスペシャル メソッドの詳細については、こちらをご覧ください。 本節 .
結論
要するに、これらが原因となる可能性があるということですね。 ランタイムエラー 1004: PasteSpecial メソッド od Range クラスが失敗しました。 を使うことで、より効果的になります。 他に何か理由がお分かりになりますか? また、何か問題がありましたら、お気軽にお問い合わせください。 エクセルウィキ をご覧ください。