|
かみちゃん さん ありがとうございました。
UCase("*.jpg;*.bmp;*.tif;*.gif;*.xls")で一度試してみたんですが、エラーが発生したため、UCaseでは、複数検索が出来ないと思っていました。
おかげさまで、マクロが早くなり簡潔なコードになりました。
▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>> 動くには動くんですが、いまいちです。
>
>TextBox1_Changeイベントで動かすことが適当かどうかが疑問ですが、
>
>> 一つの拡張子しか指定出来ない。
>> '↓一度シートにロードしてからListBoxに張付けていますが、直接
>> 'ListBoxにロードできないものか?
>
>これらについて、対応するとすれば、一例として、以下のように修正します。
>
>Option Explicit
>Private g_strEXT As String
>Dim vntFile() As Variant '★
>
>Private Sub TextBox1_Change()
> Dim objFSO As FileSystemObject
> Dim cntFound As Long
>
> Set objFSO = New FileSystemObject
>
> g_strEXT = UCase("*.jpg;*.bmp;*.tif;*.gif;*.xls") '★
>
> cntFound = Sample_FileSearch_SUB(objFSO, objFSO.GetFolder(Trim(TextBox1.Text)), GYO, cntFound) '★
>
> With ListBox1
> .Clear
> If cntFound > 0 Then '★
> .List = vntFile '★
> MsgBox "ファイルがありました" '★
> Else '★
> MsgBox "ファイルがありませんでした" '★
> End If '★
> End With
>End Sub
>
>Function Sample_FileSearch_SUB(objFSO As FileSystemObject, _
> ByVal objFolder As Folder, _
> GYO As Long, cntFound As Long) As Long '★
> Dim objFile As File
> Dim v As Variant '★
> Dim i As Long '★
>
> v = Split(g_strEXT, ";") '★
> For Each objFile In objFolder.Files
> With objFile
> For i = 0 To UBound(v) '★
> If UCase(.Name) Like v(i) Then '★
> ReDim Preserve vntFile(cntFound) '★
> vntFile(cntFound) = .Name '★
> cntFound = cntFound + 1
> Exit For '★
> End If '★
> Next '★
> End With
> Next objFile
>
> Sample_FileSearch_SUB = cntFound '★
>
>End Function
|
|