VBA
1Sub ファイル名取得() 2 3 '配列を取得----------------------------------- 4 Dim i As Long 5 Dim MyArray1 As Variant '列C 6 ReDim MyArray1(0) 7 8 For i = 3 To 55 9 If ThisWorkbook.Sheets(2).Range("B" & i).Value <> "" Then 10 ReDim Preserve MyArray1(UBound(MyArray1) + 1) 11 MyArray1(UBound(MyArray1)) = ThisWorkbook.Sheets(2).Range("B" & i).Value 12 End If 13 Next i 14 15 '配列のEmptyを削除----------------------------------- 16 Dim j As Long 17 j = LBound(MyArray1) 18 Dim k As Long 19 20 For k = LBound(MyArray1) To UBound(MyArray1) 21 If MyArray1(k) <> "" Then 22 MyArray1(j) = MyArray1(k) 23 j = j + 1 24 End If 25 Next k 26 ReDim Preserve MyArray1(j - 1) 27 28 'ファイル名取得----------------------------------- 29 Dim filePath As Variant 30 filePath = Application.GetOpenFilename( _ 31 FileFilter:="Excelブック(*.xlsx;*.xlsm;*.xls),*.xlsx; *.xlsm; *.xls;", MultiSelect:=True) 32 33 Dim r As Long 34 Dim wb As Workbook 35 Dim rng As Range 36 37 If IsArray(filePath) Then 38 For r = LBound(filePath) To UBound(filePath) 39 Set wb = Workbooks.Open(filePath(r)) 40 If wb.Name Like "*" & MyArray1(i) & "*" Then 41 rng = ThisWorkbook.Sheets(2).Columns("B").Find(MyArray1(i)) 42 rng.Offset(0, 1).Select 43 ActiveCell.Value = Dir(filePath) 44 End If 45 Next r 46 Else 47 Exit Sub 48 End If 49 50End Sub
B列には東京、神奈川、福岡、札幌などがあらかじめ入力されており、B列を配列に格納します。
ブックを開き、ファイル名が配列に一致(ワイルドカード)したとき
B列を配列で検索し、ヒットしたセルを選択後、右隣にファイル名を表示したいです。
VBA
1If wb.Name Like "*" & MyArray1(i) & "*" Then
初歩的だとは思うのですが
エラー9 インデックスが有効範囲にありません。
と出ます。
どなたかご教示いただけたらと思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー