プロが教える店舗&オフィスのセキュリティ対策術

異なるブック間でクリップボードを経由せず直接コピーしたいため
下記のマクロを記述していますが、実行エラーが発生します。
どうしてでしょうか。

ThisWorkbook.Worksheets(3).Range(Cells(3, 1), Cells(3 + a, 1)).Value = Workbooks("excel.xls").Worksheets(1).Range(Cells(11, 3), Cells(11 + a, 3)).Value

(補足)
(1)VBA実行中のThisWorkbook、excel.xlsは別のブック
ですが、同じフォルダにあります。
(2)aは数値が入る変数です。

A 回答 (2件)

Cells(3, 1)や他のCellsが参照エラーになるためです。


ブックとワークシートを特定できないためエラーになってしまいます。
正しくは
ThisWorkbook.Worksheets(3).Range(ThisWorkbook.Worksheets(3).Cells(3, 1), _
ThisWorkbook.Worksheets(3).Cells(3 + a, 1)).Value _
= Workbooks("excel.xls").Worksheets(1).Range(Workbooks("excel.xls").Worksheets(1).Cells(11, 3), _
Workbooks("excel.xls").Worksheets(1).Cells(11 + a, 3)).Value
    • good
    • 30
この回答へのお礼

実行エラーがなくなりました!
各Cellsのブックとシートを指定しないといけなかったのですね。
貼り付けるだけの簡単な処理なので、すぐ解決できるエラーだと思っていましたが、簡単なようで難しかったです。
ありがとうございましたm(_ _)m

お礼日時:2009/01/16 12:34

"excel.xls"を開いていますか?


>同じフォルダにあります。
という記述からすると、もしかして開かずに処理しようとしている?それは無理です。
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。
エクセルの「excle.xls」は開いてから処理しています。

お礼日時:2009/01/16 07:33

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