[[20050323222205]] 『【エクセルVBA】シートのコピーについて』(☆ぱぐ☆) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『【エクセルVBA】シートのコピーについて』(☆ぱぐ☆)

 お世話になります。
 エクセルのVBAでテンプレートとして使いたいシートを
 VBAのソース上で以下のようにコピーしています。

 'サンプルシートをコピーする
 TableName = Replace(FileName, ".XLS", "")'1
 Sheets("サンプル").Copy Before:=Sheets("サンプル")'2
 Sheets("サンプル (2)").Select'3
 Sheets("サンプル (2)").Name = TableName'4

 1でTableNameに新しくできるシート名を代入しています。
 2でテンプレートとして用意しておいたシート"サンプル"をコピーしています。
 3で新しくできたシート"サンプル (2)"を選択して
 4でシート名を変更しています。

 上記の場合、シートコピーを繰り返す内
 (バッチ処理のような感じで160シート程追加 する)
 シートオブジェクトのCOPYメソッドが失敗しました。と表示され、
 そこからはコピーは常に失敗するようになります。

 一度そのブックを落として再び立ち上げてから上記のマクロを実行すると
 ある程度(そのときによります)まではコピーを繰り返すのですが、
 その後やはり上記のように失敗します。

 Sheets("サンプル").Copy Before:=Sheets("サンプル")は、
 実はマクロではなくても、手動でコントロールキーを押しながら
 サンプルシートを選択してコピーしようとしても
 コピーができない場合がありますので、
 この辺に何かの原因があるのではないかと思ったのですが
 ここでギブアップです。。。

 上記を正常に実行する為にやるべき事、
 またテンプレートのシートをこのブックに取り込む方法が他にあれば
 教えていただけませんでしょうか。
 宜しくお願い致します。

 >160シート程追加 する
 Excelの使い方として不適切です。
 ただのメモリ不足エラーです。
 ふつうはそんなにたくさんのシートを使いません。

  (INA)

 私もINAさんと同意見です。
メモリの許す限りシートを追加することは可能ですが、
同じようなレイアウトのシートを100以上も用意するやり方はあまり感心できません。
同じレイアウトで違った内容を表示する必要があるなら、
一つのシートに違った内容を都度表示させるような運用方法を
考えるべきです。
そのためにもデータベース的な運用の仕方を身につける必要はありますが。
(みやほりん)

 INAさん、みやほりんさん
 お世話になっております。ぱぐです。

 >ただのメモリ不足エラーです。
 確かにそのようでした。
 無理やり詰め込んだはいいが、開けないブックができあがったりしました。。

 >一つのシートに違った内容を都度表示させるような運用方法を
 >考えるべきです。
 おっしゃる通りかもしれません。アドバイスありがとうございます。

 今回の作業は職場のDB内にあるテーブルの定義書を1ブックにまとめる
 という要望があった為取り掛かっておりました。

 お二人のアドバイス通り、「メモリ不足」についてを
 考え、現在は50シートずつに分離させております。

 ただ、今回私がやろうとしていた事が現実的ではないと
 いう事は理解したのですが、
 今回の質問内容の一つである、
 「またテンプレートのシートをこのブックに取り込む方法が他にあれば」
 教えていただけませんでしょうか?

 皆さんお忙しい中大変恐縮ですが、何卒宜しくお願いいたします。

(ぱぐ)


 ただのシートコピーならマクロの記録でできませんか?
  (INA)


 INAさん、お世話になっております。

 'サンプルシートをコピーする
 TableName = Replace(FileName, ".XLS", "")'1
 Sheets("サンプル").Copy Before:=Sheets("サンプル")'2
 Sheets("サンプル (2)").Select'3
 Sheets("サンプル (2)").Name = TableName'4

 の2がマクロの記録で取ったシートコピーのステートメントなのですが、
 他に方法があれば試してみたいと思い質問させていただきました。

 ですが、無いようでしたので今回はあきらめます。
 皆さん、お手数をおかけして申し訳ございませんでした。
 また何かありましたら宜しくお願いいたします。


 >「またテンプレートのシートをこのブックに取り込む方法が他にあれば」 
   ↓
 Sheets("サンプル").Copy Before:=Sheets("サンプル")
 というのことなのですか?  

 状況がよくわかりません。
 何が問題でどのようにしたいのでしょうか?

 テンプレートとして使いたいシートは、
 マクロブックとは別にある xltファイル か何かでしょうか? 
  (INA) 

 INAさんご返信感謝いたします。

 >状況がよくわかりません。
 >何が問題でどのようにしたいのでしょうか?

 テンプレートという言い方がまずかったのでしょうか。
 大変失礼いたしました。
 問題点:@Sheets("サンプル").Copy Before:=Sheets("サンプル")がメモリ不足でこける時がある。
 希望:上記以外の方法で現在作業中のウホホ.xlsに"サンプル"シートを挿入したい。
 なんとなく:同じブック内でのシートコピーの方法は@以外には無いですよね。
 例えば:他のブックに"サンプル"シートを作成しておいて都度開き、それを現在作業中のウホホ.xlsに取り込む等々。。
 とにかく:"サンプル"シートはあるシステムのテーブル定義書の雛型なのです。
 えっと:メモリ不足でこけてるんだからどんな方法でも変わらない
 とはおっしゃらずに「他に」"サンプル"シートをウホホ.xlsに取り込める方法を知りたいのです。

 >テンプレートとして使いたいシートは、
 >マクロブックとは別にある xltファイル か何かでしょうか? 
 いいえ、違います。普通のブック、ウホホ.xlsの中にある"サンプル"シートの事です。

 私の拙い文章で皆さんを混乱させてしまい、
 大変失礼いたしました。
 上記内容、何卒宜しくお願いいたします。
 (ぱぐ)

 >メモリ不足でこけてるんだからどんな方法でも変わらない
 と言いたいです。

 コピーもとがどこであろうとも、
 コピーされるブックがメモリ不足では同じことです。
 たとえ、コピーできたとしても、ブックが開けなくなったら意味無いですし。
 手順の問題ではなく、EXCELの限界ですから仕様を見直しましょ。

  (INA)


 INAさん、ご指導ありがとうございます。 
 上の方の私の発言の通り、現在は50シートずつに分けていますので
 おっしゃる通り仕様を見直した事になるかと思います。

 私の文章の稚拙さが招く誤解だと受け止め、深く反省しつつ
 やはり、
 >「他に」"サンプル"シートをウホホ.xlsに取り込める方法を知りたいのです。
 この方法があるのかどうかだけでもご存知無いでしょうか?
 この方法があるのどうかを今必死に検索しているところなのです。

 この質問はメモリ不足の問題とは全く別問題です。

 すみません、新しく板(スレッド?)を立て直したほうがよろしいでしょうか?

 皆さん、お忙しい中大変恐縮ですが、何卒宜しくお願いいたします。

 (ぱぐ)


 ブックが別でも、手作業をマクロの記録すればできますよ。
 シートコピーの際に、移動先のブックを指定すればできると思います。
 なお、処理には両方のブックを開く必要があります。
  (INA)


 INAさん、ご返信ありがとうございます。
 >シートコピーの際に、移動先のブックを指定すればできると思います。
 ありがとうございます。都度開くのは重そうですので
 処理中は開きっぱなしでやってみたいと思います。
 私の方も上記以外の方法を色々模索してみたいと思います
 この度はご迷惑ばかりお掛けして大変申し訳ございませんでした。
 日々精進いたしますので、また何かありましたら宜しくお願いいたします。

 この度はありがとうございました。
 (ぱぐ)

 >都度開くのは重そうですので
 ファイルサイズ次第ですよ。
 ふだん開くのがおもくないファイルならあっという間です。 

 ブックを分割したのだとすると、
 それぞれのブックにテンプレートシートを用意することになり、
 もし変更が必要になったときに、少し面倒かもです。 
  (INA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.