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

特定の文字を含むシート名を、別のエクセルファイルに一覧化したいのですが、方法をお教えください!

■質問の詳細
「A.xls」、「B.xls」、「C.xls」というファイルにはそれぞれ8つのシートがあるのですが、そのうち、”test”という文字を含むシート名だけ、「X.xls」という集計用ファイルの「sheet1」のCell(4,2)に一覧化したいのですが、エクセルマクロを使用して実施する方法をお教えいただけませんでしょうか。

A 回答 (2件)

以下のマクロをX.xlsの標準モジュールに作ります。


Dim セル位置 As Long
Sub Main()
セル位置 = 2
'★自ブック内のSheet1のセルをクリア(コード略)
Proc "A.xls"
Proc "B.xls"
Proc "C.xls"
End Main
Sub Proc(ByVal パス名 As String)
Dim ブック As Workbook
Dim シート As WorkSheet
Dim 名前 As String
Set ブック = Workbooks.Open(パス名) '★エラーハンドリング省略
For Each シート In ブック.WorkSheets
  名前 = シート.Name
  If Instr(名前, "test") > 0 Then
    ThisWorkbook.Sheet1.Cells(4, セル位置) = 名前
    セル位置 = セル位置 + 1
  End If
Next
ブック.Close
End Sub
あとはMainを実行するだけ。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
細かい修正はありましたが、ほぼご教授頂いたとおりで希望通りの動きができました!ありがとうございました。 

お礼日時:2009/06/25 17:58

(1)ブック名のブックを開く。


(2)各シート名は
Sub test02()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
MsgBox sh.Name
Next
End Sub
で捕まえられる。
(3)文字列を含むは、INSTR関数で見つけられる。
エクセル関数のFindやCountifも使えそうだが、見つからなかったときの処理が難しい。
Sub test03()
x = "adfghj"
x = "yubhjk"
On Error GoTo err1
p = WorksheetFunction.Find("bbh", x)
MsgBox p
Exit Sub
On Error GoTo err1
err1:
MsgBox "含まない"
End Sub
(4)含んでいるSh.Nameをシートのセルに書き出し次の行に書き込めるよう行ポンターを+1
(5)全シートを点検終わったらブックを閉じる。
次のブックを開くに移る。
(6)ブックが有るフォルダ内にありエクセルブックで対象外がないなら、VBSでフォルダの全ファイルを捕まえる方法あり、xls以外は対象にしないことも出来る。
    • good
    • 0
この回答へのお礼

希望どおりの処理ができました。ご返信ありがとうございました。

お礼日時:2009/06/25 18:00

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