- ベストアンサー
エクセルの範囲のコピーがうまくいかない
- エクセルにおいてシートの範囲をコピーし、他のブックのシートにコピーするVBAがうまくいきません。
- 「実行時エラー424;オブジェクトが必要です」というエラーメッセージが表示されます。
- 正しいオブジェクトを指定してコピーと貼り付けを行うコードを記述してください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 通常なら、そのマクロでも通るはずですが、それが、実体化していないファイル、つまり新規作成で作られたもので、保存していないファイルだったら、 「実行時エラー424;オブジェクトが必要です」 そういうエラーはあるかもしれませんね。 もともと、それは記録マクロですから、以下のようなマクロでは、そういう問題はないかと思います。 Sub testMacro2() Dim SourceFile, TourceFile, SourceSheet, TargetSheet As String SourceFile = "Book1" TargetFile = "Book2" SourceSheet = "Sheet1" TargetSheet = "Sheet1" With Workbooks(SourceFile) .Sheets(SourceSheet).Columns("A:F").Copy _ Workbooks(TargetFile).Sheets(TargetSheet).Cells(1, 1) End With End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >この場合拡張子を含めてファイルを指定しないといけないということでしょうか? すみません、私も、言われて気が付きましたが、#1 の書き込みで、実体のある・なしを書きましたが、 SourceFile = "Book1.xls" TargetFile = "Book2.xls" 両方とも、保存がしてあって、ファイルがあれば、拡張子を付けなくてはならないのですが、両方とも保存されていない状態では、 SourceFile = "Book1" TargetFile = "Book2" できるのですね。そういう例は、めったにないことかもしれませんが。
お礼
Wendy02さん、初心者にも関わらず、丁寧なご回答ありがとうございました。 ちょっとしたことでも、自分で気がつかないことがあるもので、助かりました。ありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 コードは、「標準モジュール」に登録してください。 私のマクロは、ペーストされる側は、保存をしていなくてもよいはずです。 「インデックスが有効範囲でない」というエラーは、そのブック名やシート名が実際のものとは違うということですね。 もしも、新規ブックにペーストするなら、コードが変わってきます。
補足
ありがとうございます。コピーをする簡単な方法がわかりました。 「標準モジュール」に登録はしなかったのですが、以下のように SourceFile = "Book1.xls" TargetFile = "Book2.xls" としたらエラーがなく、実行できました。この場合拡張子を含めてファイルを指定しないといけないということでしょうか?
補足
さっそく、ご回答まことにありがとうございます。 >実体化していないファイル、つまり新規作成で作られたもので、保存していないファイルだったら ということで、フォルダに保存してご教示いただいたプログラムを実行したところ、「実行時エラー9:インデックスが有効範囲にありません」とエラーが発生しました。ファイルを保存する場所などに制約がありましたでしょうか?基本的なことを見落としているかもしれませんが、よろしくお願いいたします。