重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

現在マクロ実行中のExcelブックのシートのセルの値を、
新規作成したブックのシートのセルに値を貼り付けたいのですが、
うまくいきません。
ただし、コピーの条件として、クリップボードは使用しない
Activeメソッドや、Selectメソッドも使用しないという制約があります

以前は、うまくいっていたのですが、コードの書き方を忘れてしまいました。以下の★印の行で、
「RangeクラスのCopyメソッドが失敗しました。」とエラーが出ます。
以前は、以下のコードに似た、ロジックで、問題なかったのですが、
どこか間違っていますでしょうか?


Dim xlsApp As Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet

Set xlsApp = CreateObject("Excel.Application")
Set xlsBook = xlsApp.Workbooks.Add
Set xlsSheet = xlsBook.Worksheets(1)

'★エラー発生
ThisWorkbook.Worksheets("Sheet1").Range("A1:D4").Copy _
Destination:=xlsBook.Worksheets("Sheet2").Range("E5")

A 回答 (2件)

直接的な部分だけで指摘すると


Set xlsBook = xlsApp.Workbooks.Add
xlsApp上で作っただけで実際にOpenされているわけではありません。
Set xlsBook = Workbooks.Add
こっちだとOpenされます。
    • good
    • 0
この回答へのお礼

popesyuさん、できました。ありがとうございました。
3時間以上も悩んでいましたが、本当にすっきりしました。

お礼日時:2007/02/10 08:19

推測ですが


CreateObject で新たなExcelのインスタンスを開いていますが
.Copy Destination:=xlsBook・・・ではマクロ実行中のExcelから
別のインスタンスのBookを指示できないのでは?

xlsBook.Worksheets("Sheet2").Range("E5") _
= ThisWorkbook.Worksheets("Sheet1").Range("A1:D4")
なら出来ましたけど

追伸
後始末をちゃんとやっておかないとExcelの亡霊がタスクマネージャの
プロセスタブで確認できます。その辺は大丈夫?
http://homepage1.nifty.com/rucio/main/technique/ …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!