- 締切済み
EXCEL VBAでの質問です。
EXCEL VBAでの質問です。 集計用のファイル1つと参照するファイルが30あります。 参照するファイルは基本的に書式は全部同じで数値だけが違い、参照させたいセル位置は全て同じです。 そしてAにある表にこのように順次下に転記させたいです。 B 1 2 4 6 2 5 C 4 5 3 7 8 4 D 2 3 7 5 3 2 この時いちいち別のコードで1つ1つのファイルを転記させるのではなく30のファイルをひとまとめに転記させるコードを作りたいと思っています。 もしわかる方がおりましたらコードをよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。 1つ考え方(方法)を追加します。 (1)対象のブックうを1つのフォルダに集める または (2)または対象としないブックを、今のフォルダより別のフォルダに移す。 のどちらかを行う。手動で操作処理することになろう。 その後 D。(1)VBAというよりVBScりptのFSOですが、フォルダ内の全ファイル(エクセルBook)を1つづつ順次捉える。 http://www.happy2-island.com/vbs/cafe02/capter01216.shtml のようにFor Each ・・・ Nextを使う。 そして集計ファイルのシートに対し処理する (2)VBのDir関数を使って、フォルダ内の全ファイルを順次捉まえる。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html 参考 これらの方法で処理対象にできる。こちらのほうが具体的なエクセルBookの名前を問題にしないのでスマートかも。集計シートのA列のデータとして、ブック名が必要なら、上例(1)のWEBのobjItem.Nameでとらえられる。
- imogasi
- ベストアンサー率27% (4737/17069)
質問の内容がよくわからない。他人に質問するなら、文書や模擬例の説明を丁寧にすること。急に「Aにある表」とでるがAはブック名か。B.Cもブック名かの説明が必要だろう。 シート名は全ブックで同じ名前なのか、すなわち1つしかないのか。Sheets(1)にあたるシートばかりだけか。 >B 1 2 4 6 2 5の 1 2 4 6 2 5は各列のセルの数値データを示すのか。 エクセルでは「フォルダー」ー「ブック」ー「シート」ー「セル範囲」の考えを常にふまえて説明するのが常識だろう。 ーー 意図を察すると For i=1 to 30 処理(適宜のところで、iで指定した情報を使う) Next i のような処理で済ませたいのか。 であれば A.(ブックのあるフォルダは同じとして)ブック名をB=Array()の()の内に定義(30要素)して、ブック名の文字列をB(i)で取り出して使うか B.集計用のシートのA列の各行に、ブック名の文字列をあらかじめ入れておいて(1度のみプログラムコードの中)、Cells(i,"A")で取り出して使うかなどが考えられる。 C,テキストファイルに、ブック名を記録する手もあろう(テキストファイルを作る)。30レコードをよみながら、その都度ブック名の指定としてそれを使う。 >もしわかる方がおりましたら 質問する場合なら、「もしわかる方がおられましたら」、が適当な表現ではないか。 >コードをよろしくお願いします。 丸写しを望まず、回答をヒントにしてコードは自分で作ること。プログラムを作る下請けコーナーではない。
- washi001
- ベストアンサー率41% (157/379)
参照させるファイル名の名前を工夫すれば、ファイルを開く際のファイル名を 変数で作成して同じルーチン内でオープンできると思います。 例えば、ファイル名を「file01」とかにして、01の部分を昇順に30まで並べ、 VBAでファイル名を変数にして、「01」の部分を増やせばよいかと。