• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロでのワイルドカードの使い方について)

マクロでのワイルドカードの使い方について

このQ&Aのポイント
  • マクロ初心者の方に向けて、ワイルドカードを使ったファイルの検索とコピー、貼り付けの方法を説明します。
  • (1)では、特定のフォルダ内のファイル名にワイルドカードを使用して条件に一致するファイルを検索し、そのファイル内の特定の範囲の値をコピーして貼り付けます。
  • (2)では、(1)と同様の方法でファイルを検索し、特定の列範囲ごとに値をコピーして貼り付けます。両方のマクロの修正点についても解説します。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

とりあえずこれで1個希望通り動くかどうか 希望どおりだと > ※「某フォルダ」に存在する、ファイル名に「あいう」を含むすべてのファイル(ファイル数は可変)が対象 こちらを追加で Sub (2)() Dim folder As String Dim dws As Worksheet Dim sfile1 As String Dim swb1 As Workbook Dim adr As String Dim c As Integer folder = "C:\Users\某フォルダ\" Set dws = ThisWorkbook.Worksheets("貼り付け先シート") sfile1 = Dir(folder & "*あいう*.xlsm") If sfile1 = "" Then Exit Sub Set swb1 = Workbooks.Open(folder & sfile1) adr = Range(Cells(5, 6), Cells(24, 31)).Address(0, 0, 1) swb1.Sheets("シート#1").Range(adr).Copy dws.Range(adr).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd For c = 6 To 30 Step 2 adr = Range(Cells(25, c), Cells(42, c)).Address(0, 0, 1) swb1.Sheets("シート#1").Range(adr).Copy dws.Range(adr).PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd Next swb1.Close False End Sub

samugetan-chan
質問者

お礼

びっくりするくらいちゃんと動きました。。。 ありがとうございます…!

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

やはり、1列置きの処理で行数が倍になります。ご参考に。 Sub myAry()  Dim Ary1 As Variant, Ary2 As Variant, Ary3 As Variant  Dim myPath As String: myPath = "C:\Users\某フォルダ\"  Dim FL As String  Ary1 = Array(""): Ary2 = Array(""): Ary3 = Array("")    Dim ct As Integer  FL = Dir(myPath & "*あいう*.xlsm")  While FL <> ""   ReDim Preserve Ary1(ct)   ReDim Preserve Ary2(ct)   ReDim Preserve Ary3(ct)   Ary1(ct) = "'" & myPath & "[" & FL & "]シート#1'!R5C6:R24C31"   Ary2(ct) = "'" & myPath & "[" & FL & "]シート#1'!"      FL = Dir(): ct = ct + 1  Wend  ActiveSheet.Range("F5").Select  Selection.Consolidate Sources:=Ary1, _    Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False  Dim c As Integer, F As Integer  For c = 0 To 24 Step 2   For F = 0 To UBound(Ary2)    Ary3(F) = Ary2(F) & "R25C" & (6 + c) & ":R42C" & (6 + c)   Next   Range("F25").Offset(0, c).Select   Selection.Consolidate Sources:=Ary3, _     Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False  Next End Sub

関連するQ&A