重要なお知らせ

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

【GOLF me!】初月無料お試し

はじめまして。
書籍や過去の質問等を調べましたが、類似するものを見つけられなかったため質問させていただきます。

Xというエクセルファイルで、Xと同一フォルダ内にある、ファイル名に特定の文字列(例えば「月報」)を含んだ全てのエクセルファイルの、特定の文字列(例えば「○年○月」)を含んだ全シートの、一定のセル範囲をひとつのシートにまとめたいと思っています。

X内のコマンドボタンで動かす予定ですが、複数のボタンになると自分では思っています(ボタンAでファイル名の取得、ボタンBでシートの取得、ボタンCでセルに貼り付け、みたいな感じで。ボタンの数は特に制限はないです)

要点としては
a, 定定の文字列を含んだファイル名の取得
b, aで取得したファイル内の特定の文字列を含んだ全てのシート内の一定のセル範囲の取得(シートの数はファイルによる。必ずしも1つというわけではない。)
c. bで取得した一定のセル範囲のデータを、1つのシートにまとめる。

あとはこれらのデータをtxtやcsvなどに出力できるようにするつもりです。

私がやってできたのは、同一フォルダ内にあるファイル名に特定の文字列を含むファイルの全てのファイル名を指定したセルに吐き出すことしかできませんでした。

なんか、ややこしい表現かもしれませんが、ご指導お願いします。

環境はxp、エクセル2003です。
よろしくお願いします。

A 回答 (1件)

試しにマクロを組んでみました。


使えるところがあれば利用してください。

Sub test()
  Dim myPath As String
  Dim myDir As String
  Dim myFile As String
  Dim myWS As Worksheet
  
  myPath = "D:\Exceldata\"
  myFile = Dir(myPath, vbNormal)
  
  Application.ScreenUpdating = False
  Do Until myFile = ""
    If myFile <> "." And myFile <> ".." Then
      If (GetAttr(myPath & myFile) And 16) <> 16 Then
        If myFile Like "教えて*" Then
          Workbooks.Open myDir & myFile
          For Each myWS In Workbooks(myFile).Worksheets
            If myWS.Name Like "Sheet*" Then
              MsgBox myFile & vbCrLf & _
                  myWS.Name & vbCrLf & _
                  "A1のデータ: " & myWS.Range("A1").Value
            End If
          Next
          Workbooks(myFile).Close SaveChanges:=False
        End If
      End If
    End If
    myFile = Dir
  Loop
  Application.ScreenUpdating = True
End Sub
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
>myPath = "D:\Exceldata\"
は、フォルダを入れればいいのですよね?
>If myFile Like "教えて*" Then
にはファイル名に含まれる文字列を入れればいいんですよね?
色々試してみましたがなかなか動きません。
というか私がコードを理解していないようです・・・・
もう少し色々試してみたいと思います。
ありがとうございます。
あと、すいません。使っているのはエクセル2000でした。

お礼日時:2008/09/01 10:11

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