У меня есть полностью работающее приложение, которое ищет документ Excel для идентификационного номера (набор из 6 чисел). Когда он найдет числа, они помещают их в метки. Мой вопрос заключается в том, что лист excel составляет почти 60000 строк, и требуется некоторое время (даже дольше, когда я ищу по имени). Есть ли способ ускорить его или другой вариант поиска?Поиск большого листа excel (быстрее)
Private Sub SearchID()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet1 As Excel.Worksheet
Dim rng As Excel.Range
Dim codeabc As String
Dim found As Boolean
Dim i As Integer
If AssociateID.Text = String.Empty Then
popup.Close()
MsgBox("Please make sure 'Associate ID' is filled out")
Exit Sub
End If
xlApp = CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.Open("G:\grps\every\People Report\HRIS Remedy Report.xls")
xlSheet1 = xlBook.Worksheets(1)
rng = xlSheet1.Range("a1:a60000")
codeabc = (AssociateID.Text)
found = False
For i = 1 To rng.Count
If rng.Cells(i).Value = codeabc Then
IDLabel.Text = AssociateID.Text
NameLabel.Text = (rng.Cells(i).offset(0, 1).value())
DepartmentLabel.Text = (rng.Cells(i).offset(0, 3).value())
PositionLabel.Text = (rng.Cells(i).offset(0, 2).value())
found = True
xlBook.Close()
popup.Close()
Exit Sub
End If
Next i
If Not found Then
MsgBox("Associate ID: " & AssociateID.Text & " is not found. Please check the ID and try again")
AssociateID.Clear()
End If
popup.Close()
xlBook.Close()
End Sub
Посмотрите, как использовать встроенную функцию поиска Excel - я сомневаюсь, что вы можете запрограммировать что-нибудь более эффективное, чем Microsoft. –
https://msdn.microsoft.com/en-us/library/office/ff839746.aspx –