- ベストアンサー
マクロでのワイルドカードの使い方について
- マクロ初心者の方に向けて、ワイルドカードを使ったファイルの検索とコピー、貼り付けの方法を説明します。
- (1)では、特定のフォルダ内のファイル名にワイルドカードを使用して条件に一致するファイルを検索し、そのファイル内の特定の範囲の値をコピーして貼り付けます。
- (2)では、(1)と同様の方法でファイルを検索し、特定の列範囲ごとに値をコピーして貼り付けます。両方のマクロの修正点についても解説します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずこれで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
その他の回答 (1)
- nishi6
- ベストアンサー率67% (869/1280)
やはり、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
お礼
びっくりするくらいちゃんと動きました。。。 ありがとうございます…!