Я действительно надеюсь, что кто-то может помочь мне с этим ....Excel VBA - Выбор диапазона файлов для поиска через
У меня есть макрос на данный момент, что позволяет пользователю ввести номер 8 цифр, а затем код выполняет поиск всех файлов .xls в определенной папке, пока не найдет это число. До сих пор существует 61 файл для поиска, и это число увеличивается с каждым днем! Мой код работает отлично, но это медленный процесс и тот, который пользователь будет делать много раз в день.
Желаемый результат - пользователь вводит дату, т.е. - 2013-10-28, которая является первой частью имени файла, затем введите вторую дату в том же формате, а затем 8-значное число. Затем макрос откроет папку предустановок, найдет первый файл, откроет его и выполнит поиск 8-значного числа. Если номер не найден, я хочу, чтобы макрос переместился к следующему файлу в папке до тех пор, пока не будет найден номер или не достигнет второй папки с определением даты, после чего она остановится.
В худшем случае я хотел бы, чтобы мой существующий макрос функционировал так же, но начинал с самого последнего измененного файла и работал назад, чтобы сократить время работы.
Это то, что я до сих пор (vaCellvalue это 8 значный номер входа пользователем): -
Sub UKSearch()
Dim FSO As Object 'FileSystemObject
Set FSO = CreateObject("scripting.filesystemobject")
Dim Directory As String
Dim FileName As String
Dim varCellvalue As Long
Application.ScreenUpdating = False
MsgBox ("This may take a few minutes")
'value to be searched
varCellvalue = Range("D13").Value
'Change the directory below as needed
Directory = "\\**********\shared$\******\*******\********\"
If Right(Directory, 1) <> "\" Then
Directory = Directory & "\"
End If
'Search for all files in the directory with an xls* file type.
FileName = Dir(Directory & "*.xls*")
'Opens, searches through and closes each file
Do While FileName <> ""
OpenFile = Directory & FileName
Workbooks.Open (OpenFile)
Workbooks(FileName).Activate
'Count through all the rows looking for the required number
ActiveWorkbook.Sheets("UK Scan Sheet").Activate
LastRow = Range("B65536").End(xlUp).Row
intRowCount = LastRow
Range("B1").Select
For i = 1 To intRowCount
'If the required number is found then select it and stop the search
If ActiveCell.Value = varCellvalue Then
GoTo Finish
Else
End If
ActiveCell.Offset(1, 0).Select
Next i
Workbooks(FileName).Close
FileName = Dir
OpenFile = ""
Loop
Finish:
Application.ScreenUpdating = False
End Sub`
Это 8-значный номер части файла? –
Нет сожаления, что я должен был сделать это яснее - 8-разрядное число содержится в одной из ячеек в одном из файлов - макрос просматривает все файлы до тех пор, пока он не попадет в правую ячейку, а затем остановится. – LuckySevens
Возможно импорт исторических данных в база данных будет работать? Если вы хотите, чтобы это масштабировалось в будущем, вы могли бы зафиксировать как минимум информацию о поиске: имя файла + значения, которые являются целью. – rheitzman