- 締切済み
【VBA】シート名をセルに入力すると、そのシートのコピーを実行させるには?
【条件】 1.仮に「合計」というシートに、追加されるシートのあるデータをコピーしたい。 2.別シートに一定のフォームの集計データが入っているので、このシート名を変更して「A」という名前に変更する。そして、「合計」の入っているブックに移動する。 3.「合計」のA1のセルに「A」という入力をしマクロを実行すれば、「A」のシートの一定のRangeから、合計の任意の場所にコピーをするマクロをつくりたい。 4.このフォームは年間同じフォームで20回発生するがそのたびに、同じような作業が必要となります。 (シートにコピーする作業は、やめて、ブックの別ファイルのあるシートから、ある一定のRangeをコピー元として、「合計」にコピーするでも問題ないです)。 If ~ Elseif ~、myRange = A1で作っても、そのmyRange = A, Elseif = B、と延々につくらなければならない(=たぶんこれは原始的なのだと自認しています)のがはがゆく、 シート名が”文字列(または数字)”の場合、その”文字列(または数字)”をもつ、ブックまたはシートから、コピーを実行というコードをつくりたいのです。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
質問の書き方がごたごたしていると思う。 また論点を絞れるのに(下記必要スキル参照)、課題を丸投げしただけ。丸投げに近い。 コードはかかず、参考事項にとどめます。 ーー 関係するのは、2つのブックのシート。 (あ)XフォルダのAブックの(集計シート)C (い)YフォルダのBブックの合計シートD このシートのA1セルにシート名文字列 E を入れてVBAを実行。 ーー 作業の流れ (1)(あ)のシート名CをEに変える (2)(あ)のシートE(元の名C)をコピー (3)(い)のシートDの最終行の次に、コピーしたシートEのデータを貼り付け こういうことではないのか。 ーーー 必要スキル(部分的にブレークダウンすると、どういう型のコード作成になるか) (A)シート名変更 (B)他ブックの参照(捉える方法) (C)シートの最終行を捉える (D) コピーし貼り付け ーー (A)は Sub Macro1() Sheets("Sheet2").Name = "追加データ1" End Sub を参考。これなどマクロの記録でわかるよ。 (C)は VBAを使うものには常識。 Sub test02() d = Range("A65536").End(xlUp).Row MsgBox d End Sub Range("A" &(d+1))行以下に貼り付け。 (B)はGOOGLEで「エクセル VBA 他ブック参照」で商会すれば記事がたくさん出る。 http://konko.hinodetown.net/denno/sample/book.htm Set b = Workbooks("c:\data2.xls").Worksheets("A")のようなのがよかろう。 ーー 1つ気になるのが、毎回(年20回?)出来るシート(名)が変わるようだが(それとも毎月同一シートを使いまわしか?余りありえない)、この名前をプログラム側で捉えないといけないが、どうするつもりなんだろう。 これが捉えられれば、質問のシート名のリネームは必要ないのではと思いだしたが、おかしいかな。 A1セルに入れるシート名の必要性は。 毎回決った同一シートの下部分に次々累積すればよいのでしょう?