Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


73821 / 76732 ←次へ | 前へ→

【7384】Re:異なるブック間でのデータコピー
回答  ichinose  - 03/9/3(水) 19:39 -

引用なし
パスワード
   ▼初心者 さん:
こんばんは。

>NewBookが複数且つ事前にOPENする必要ありなので、
>ブック名を特定する必要があったのです。
>
>自分なりにも色々試してしましたが、
>現在、以下の方法で動くことを確認しています。
>(Officeのバージョンは '97を使用しています。)
>
> Dim strPosition as String
> strPosition = Application.ConvertFormula(引数記述略) 
>                        ←R1C1形式をA1形式に変換
> Workbooks("A.xls").Worksheets("Sample").Range("A1").Copy _
> Workbooks(NewBook).Worksheets(1).Range(strPosition)          
>
>理由はわかりませんが、Rangeの部分の記述において
> Range(A1形式)      -> OK
> Range(Cells(Row,Col)) -> NG
  '↑こういう指定は、そもそもできませんが・・・
  range(Cells(Row,Col).address) 'ならわかりますが・・・ 
>となりました。

例えば、ブックA.xlsのシートSampleのセルa1を
Workbooks(NewBook).Worksheets(1)で取得できるシートのセルA1〜A10に
コピーすることを考えます。
この場合、

Workbooks("A.xls").Worksheets("Sample").Range("A1").Copy _
 Workbooks(NewBook).Worksheets(1).Range(cells(1,1),cells(10,1))    

とすると、同様のエラーが発生します。
Cellsは、プロパティですから、その前にはオブジェクトが必要です。
省略すると、アクティブシートのプロパティと見なされますが、
アクティブなシートがブックA.xlsのシートSampleだったら、記述に矛盾が出てきてしまいます(Workbooks(NewBook).Worksheets(1)に貼り付けるのに、
Worksheets("Sample")のプロパティでは矛盾でしょ?)。

上記の記述でも変数Newbookで示されるブックの左端シートがアクティブになっていれば、正常に実行されるはずです。

with Workbooks(NewBook).Worksheets(1)
  Workbooks("A.xls").Worksheets("Sample").Range("A1").Copy _
   .Range(.cells(1,1),.cells(10,1))
  end with    

どちらのブックがアクティブになっていてもエラーにならないはずです。
元々の採用されているコードとどちらが良いかは、又別の問題ですが・・・。

ご質問の回答になったでしょうか?
3 hits

【7341】異なるブック間でのデータコピー 初心者 03/9/2(火) 20:14 質問
【7354】Re:異なるブック間でのデータコピー ichinose 03/9/3(水) 7:45 回答
【7379】Re:異なるブック間でのデータコピー 初心者 03/9/3(水) 17:05 お礼
【7380】Re:異なるブック間でのデータコピー 初心者 03/9/3(水) 17:10 発言
【7384】Re:異なるブック間でのデータコピー ichinose 03/9/3(水) 19:39 回答
【7422】Re:異なるブック間でのデータコピー 初心者 03/9/4(木) 16:29 お礼

73821 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free