- ベストアンサー
Excel VBAマクロで複数のファイルから読み出し
Excel2002を使用して、以下のような処理を実現しようとしています。 1. ある特定のフォルダに格納されている複数の *.xls ファイルを順番に開く 2. 先頭のシートの特定のセル(例えばA1~D1)の値をコピーして、適当なBOOKのSheet1に上から順に貼り付け、表にする。(最初はA1~D1に貼り付け、次はA2~D2、A3~D4・・・とファイルの数だけ繰り返す) 上記1.の実現方法がよく分かりません。ヘルプを見てもどうも要領を得なくて。 JavaやC,C++のプログラミング経験はあります。 また、VBAマクロも簡単なものなら作成経験があります。 よろしくおねがいします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 「表」を作成したいBookの標準モジュールに以下をコピペしたら、対象とする「ある特定のフォルダ」に保存してから実行してください。 Sub TEST01() Dim mb As Workbook, wb As Workbook Dim myFdr As String, fname As String Dim i As Integer Application.ScreenUpdating = False '画面更新を一時停止 Set mb = ThisWorkbook 'このbookをmbとする。 myFdr = ThisWorkbook.Path 'このbookのパスを取得 fname = Dir(myFdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fname = Empty '全て検索 If fname <> mb.Name Then 'book名がこのbookの名前でなければ Set wb = Workbooks.Open(myFdr & "\" & fname) '開き,wbとする。 i = i + 1 'カウント wb.Sheets(1).Range("A1:D1").Copy mb.Sheets("Sheet1").Cells(i, "A") 'コピー wb.Close (False) '保存しないで閉じる End If fname = Dir 'フォルダ内の次のbookを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新停止を解除 MsgBox i & "件のブックをコピーしましました。" End Sub
その他の回答 (3)
- n-jun
- ベストアンサー率33% (959/2873)
あるブックの特定のシートの特定のセルであれば、 ブックを開かないで読む http://www.officetanaka.net/excel/vba/tips/tips28.htm の方法もあるようです。 ただ、 >複数の *.xls ファイルを順番に開く って開く順番が決まっているのではなく、順次開いていくと言う事でしょうか。
- hallo-2007
- ベストアンサー率41% (888/2115)
1についてですが、Dir()関数でググッてみると良いですよ、参考までに 新しいブックを開いて A1セルに 特定のフォルダへの パスを入れておきます。 Sub ブック結合() Dim buf As String, i As Long buf = Dir(Range("A1").Value & "\*.xls") Do While buf <> "" i = i + 1 Workbooks.Open Worksheets(1).Range("A1").Value & "\" & buf ThisWorkbook.Worksheets(1).Cells(i + 1, 1) = buf Workbooks(buf).Close SaveChanges:=False buf = Dir() Loop End Sub を標準モジュールにコピィして実行してみてください。
- pascal3141
- ベストアンサー率36% (99/269)
質問番号4325399に同じような質問がありましたので私が答えています。探してみてください。