Excel VBA質問箱 IV

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

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


2575 / 13645 ツリー ←次へ | 前へ→

【67127】シートをコピーするときに ぴーちゃん 10/11/7(日) 15:22 質問[未読]
【67134】Re:シートをコピーするときに SK63 10/11/8(月) 7:00 発言[未読]
【67135】Re:シートをコピーするときに sasa 10/11/8(月) 8:47 回答[未読]
【67146】Re:シートをコピーするときに UO3 10/11/10(水) 15:32 発言[未読]
【67147】Re:シートをコピーするときに UO3 10/11/10(水) 15:35 回答[未読]

【67127】シートをコピーするときに
質問  ぴーちゃん  - 10/11/7(日) 15:22 -

引用なし
パスワード
     workbooks("元データ").worksheets("Data")
のすべてのセルをコピーし
  workbooks("集計").worksheets("Data")
に貼り付けたいと思います。
このとき、workbooks("元データ")を事前に立ち上げずにコピーすることはできるのでしょうか。

【67134】Re:シートをコピーするときに
発言  SK63  - 10/11/8(月) 7:00 -

引用なし
パスワード
   ▼ぴーちゃん さん:
>  workbooks("元データ").worksheets("Data")
>のすべてのセルをコピーし
>  workbooks("集計").worksheets("Data")
>に貼り付けたいと思います。
>このとき、workbooks("元データ")を事前に立ち上げずにコピーすることはできるのでしょうか。

確か、できないはずです(コピーなら)
ただし、開かずに読むことは出来ますが、、、、
立ち上げずにコーピーをする意味は何かあるのでしょうか?

【67135】Re:シートをコピーするときに
回答  sasa  - 10/11/8(月) 8:47 -

引用なし
パスワード
   >このとき、workbooks("元データ")を事前に立ち上げずにコピーすることはできるのでしょうか。

コピーするセル範囲が分かっていて、値で貼り付けなら出来るでしょう。
例えば、workbooks("元データ").worksheets("Data"),range("a1:e50")の値を
workbooks("集計").worksheets("Data").range("a1:e50")に貼り付けとか...

【67146】Re:シートをコピーするときに
発言  UO3  - 10/11/10(水) 15:32 -

引用なし
パスワード
   ▼ぴーちゃん さん:

こんにちは

なぜ開かなきゃいけないかというSK63さんのご意見に同じです。
なんとなく、開かないで処理すると[かっこいい]?
あるいは、もしかしたら処理効率が[すごくいい]?

開かないというのは、あくまで画面上で見えないだけで、奥深いところでは
目的のブックの目的のシートに対するIOは発生しており、メモリー上にも
[きっと、どこかに]展開されていると思われますよ。

やるなら、ExcecuteExcel4Macro を使って、1セルごとに抽出することを
必要なセル数、実行するか、あるいは(これもセルごとにVBAで)リンクを埋め込み
最後に、リンク式の入ったセルを値に変換・・・

こんなあたりでしょうかね。そのためのコード処理のほうが負荷が大きいかもですよ。
開いたブックなら、極端に言えば Cells.Copy 一発で処理できますよね。
見た目、かっこよく(?)したいなら、開く前に Application.ScreenUpdating = False
開いてコピーしてブックを閉じたあとに Application.ScreenUpdating = True

転記するセル数にもよりますが、このほうが、絶対に早いと思います。

【67147】Re:シートをコピーするときに
回答  UO3  - 10/11/10(水) 15:35 -

引用なし
パスワード
   ごめんなさい

誤)なぜ開かなきゃいけないか
正)なぜ開かずに処理しなきゃいけないのか

です。

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