| 
    
     |  | パソコンを入れ替えたため、Excel2003→2010になって苦労してます。 フォルダにテキストファイルがあり、それを読み込んで、先頭データが検索条件に一致したものだけをシートにリストアップします。
 今まではFileSearchを使用していましたが、2010では使えないので、
 
 Private Sub CommandButton1_Click()
 Dim ws1 As Worksheet, i As Long, j As Long, zuban As Variant, myname As Variant
 Dim flag As Boolean, k As Long, flag0 As Boolean, path As Variant, fn As Variant
 Dim FSO As Object, Folder As Variant, File As Variant
 Set FSO = CreateObject("Scripting.FileSystemObject")
 Set ws1 = Worksheets(1)
 ws1.Range("A:C").ClearContents
 If ws1.Range("F2") = "" Or ws1.Range("E2") = "" Then Exit Sub
 ws1.Range("F3") = "検索中です。しばらくお待ち下さい。"
 k = 1
 path = "Y:\DB\流用図\F" & ws1.Range("E2")
 For Each File In FSO.GetFolder(path).Files
 flag = False: flag0 = False
 Open path & "\" & File.Name For Input As #1
 Line Input #1, zuban
 If EOF(1) = False Then
 Line Input #1, myname
 Else
 flag0 = True
 End If
 Close #1
 If flag0 = False Then
 If Len(myname) >= Len(ws1.Range("F2")) Then
 If myname = ws1.Range("F2") Then
 flag = True
 ElseIf Len(myname) > Len(ws1.Range("F2")) Then
 j = 1
 Do
 If Mid(myname, j, Len(ws1.Range("F2"))) = ws1.Range("F2") Then
 flag = True
 Else
 j = j + 1
 End If
 Loop Until flag = True Or Len(ws1.Range("F2")) + j - 1 > Len(myname)
 End If
 If flag = True Then
 ws1.Range("A" & k) = zuban
 ws1.Range("B" & k) = myname
 ws1.Range("C" & k) = Left(File.Name, Len(File.Name) - 4)
 ws1.Cells(k, 1).Select
 k = k + 1
 End If
 End If
 End If
 Next File
 ws1.Range("F3") = "3列目をダブルクリックすると、図面が見れます。"
 End Sub
 
 素人が作ったものなので醜くてすいません。
 上記で動かすと、フォルダ内のファイルが少ないとうまく行くのですが、多いといつまで待っても動きません。
 2003-FileSearchでやっていたときは、古い、とろくさいパソコンでも3分ほどで処理できてたのですが・・・。
 
 なにかアドバイスがあれば、よろしくお願いいたします。
 
 
 |  |