• ベストアンサー

.xlsにワイルドカードを使うには?

あい20060925.xls  を下記のように記述してはいけないようですが、 ワイルドカードをどのように使用すればよろしいでしょうか? 以上 よろしくお願い致します。 -------------------- Sub tes1() '任意のブックの全シートを1つのブックにまとめる Workbooks("あい*.xls").Activate ActiveWorkbook.Worksheets. _ Copy after:=Workbooks("集計.xls").Sheets(Workbooks("集計.xls").Sheets.Count) End Sub --------------------

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 次の例は、既に開いているブックの内、「あい*.xls」の名前を持つブック だけコピーします。(*はワイルドカード) For Each wb In Workbooks   If wb.Name Like "あい*.xls" Then     With Workbooks("集計.xls")       wb.Worksheets _       .Copy After:=.Sheets(.Sheets.Count)     End With   End If Next

oshietecho-dai
質問者

お礼

いや~ 「条件判断」と「比較演算子」なんですね! 更に、ダイエットもできちゃいました。 どうも有難うございました。

その他の回答 (3)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

蛇足ですが.... FileSearch なら LookIn プロパティーでルートフォルダの パスが指定できますよ(^^)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

No.2です。 デスクトップを指すフォルダはWSH(Windows Scripting Hosts)のオブジェクトから取得できます。 そのように指定してみました。 (ついでにちょっとNo.1さんの真似をして書き換えてみました) Sub test1()   '任意のブックの全シートを1つのブックにまとめる   Dim i As Integer   Dim DeskTop As String   Dim WSH As Object   Dim TotalBook As Workbook   Set WSH = CreateObject("WScript.Shell")   DeskTop = WSH.SpecialFolders("Desktop") & "\"   Set TotalBook = Workbooks("集計.xls")      With Application.FileSearch     .Filename = DeskTop & "あい*.xls"     If .Execute() > 0 Then       For i = 1 To .FoundFiles.Count         Workbooks.Open Filename:=.FoundFiles(i), ReadOnly:=True         Workbooks(Workbooks.Count).Activate         With TotalBook           ActiveWorkbook.Worksheets.Copy after:=.Sheets(.Sheets.Count)         End With         Workbooks(Workbooks.Count).Close SaveChanges:=False       Next i     End If   End With End Sub

oshietecho-dai
質問者

お礼

ご詳細、誠に有難うございます。 度々と、恐れいります。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

FileSearchオブジェクトを使えばワイルドカードを使用できます。 以下のような感じでしょうか。 Sub test1()   '任意のブックの全シートを1つのブックにまとめる   Dim i As Integer   With Application.FileSearch   .FileName = "あい*.xls"     If .Execute() > 0 Then       For i = 1 To .FoundFiles.Count         Workbooks.Open FileName:=.FoundFiles(i), ReadOnly:=True         Workbooks(Workbooks.Count).Activate         ActiveWorkbook.Worksheets. _         Copy after:=Workbooks("集計.xls").Sheets(Workbooks("集計.xls").Sheets.Count)         Workbooks(Workbooks.Count).Close SaveChanges:=False       Next i     End If   End With End Sub

oshietecho-dai
質問者

補足

ご回答どうも有難うございます。 このような応用、誠に有難うございます。奥深いですね! いや~ 私にとっては、非常~に難問でしたが、なんとかできることとなりました。 もしよろしかったらで結構ですが、一つお願い申し上げます。  フォルダがデスクトップにある場合は、どのように記述するのでしょか?