0

下面编写的代码使用用户提供的名称搜索文件并将其显示在消息框中。是否可以将其存储在一个数组中,以便在需要时,可以打开并循环打开搜索结果文件以读取搜索结果文件的内容?


 Private Sub cmdsubmit_Click()

 If Me.PART_NUMBER.Value = "" Then
    MsgBox "Please enter the Part Number.", vbExclamation, "PART SEARCH"
    Me.PART_NUMBER.SetFocus
    Exit Sub
 End If


 If Me.ID_TAG.Value = "" Then
    MsgBox "Please Select a ID TAG.", vbExclamation, "PART SEARCH"
    Me.ID_TAG.SetFocus
    Exit Sub
 End If

 Call flist

 End Sub

Sub flist()



Dim myList
Dim fldr As String, fltr As String, sTemp As String, sHldr As String
Dim i As Long
Dim msg As String
Dim FileCount As Integer

  FileCount = 0



fldr = "C:\Users\op\Desktop\New folder"
If Right$(fldr, 1) <> "\" Then fldr = fldr & "\"
fltr = (Me.PART_NUMBER.Value & "*.xls")

msg = fltr & " files found:" & vbLf
sHldr = Dir(fldr & fltr)
Do While sHldr <> ""
    sTemp = sTemp & "|" & sHldr
    sHldr = Dir
Loop
If sTemp <> "" Then
    myList = Split(sTemp, "|")
    For i = 1 To UBound(myList)
        msg = msg & vbLf & myList(i)
    Next i
Else
    msg = msg & vbLf & "None"
End If
MsgBox msg


End Sub
4

1 回答 1

0

你好像丢了你End Sub的。

您可以将(但不包括)Sub fList()和其之间的代码复制End Sub到第一个代码的末尾(就在其 End Sub 之前)或使用

Call fList

再次,在 Click 事件的 End Sub 之前。

添加用户必须输入thefile.gifthefiles.*才能使用Dir. 如果他们something作为 PART_NUMBER 输入,则它正在寻找同名的(单个)文件夹,或同名的文件(不带扩展名)。

添加以回应进一步的评论。如果用户输入“1”作为 PART_NUMBER,那么您的代码将找到以“1”开头的文件,这是一个字符串。如果您想查找以任意数字开头的文件,则必须在循环中编写构造这些文件名的代码:

For x = 1 to 800

如果他们输入“banana1”并且您想要查找所有文件“banana1”、“banana2”,那么您需要从文本末尾删除“1”,然后再次循环查找文件。您可以通过查找“banana1*”、“banana2*”等来减少循环次数。

于 2013-07-21T17:14:15.000 回答