重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excel2002を使用して、以下のような処理を実現しようとしています。

1. ある特定のフォルダに格納されている複数の *.xls ファイルを順番に開く
2. 先頭のシートの特定のセル(例えばA1~D1)の値をコピーして、適当なBOOKのSheet1に上から順に貼り付け、表にする。(最初はA1~D1に貼り付け、次はA2~D2、A3~D4・・・とファイルの数だけ繰り返す)

上記1.の実現方法がよく分かりません。ヘルプを見てもどうも要領を得なくて。

JavaやC,C++のプログラミング経験はあります。
また、VBAマクロも簡単なものなら作成経験があります。
よろしくおねがいします。

A 回答 (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
    • good
    • 2

あるブックの特定のシートの特定のセルであれば、


ブックを開かないで読む
http://www.officetanaka.net/excel/vba/tips/tips2 …
の方法もあるようです。

ただ、
>複数の *.xls ファイルを順番に開く
って開く順番が決まっているのではなく、順次開いていくと言う事でしょうか。
    • good
    • 0

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
を標準モジュールにコピィして実行してみてください。
    • good
    • 0

質問番号4325399に同じような質問がありましたので私が答えています。

探してみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!