Как открыть файл в определенной папке с именем файла, начинающимся с переменной?
Привет,
Я пытаюсь найти файл в определенной папке. Имя файла состоит из уникальной переменной, а затем некоторых случайных чисел и всегда будет в формате .XLS.
Уникальную переменную можно найти в файле, из которого будет выполняться макрос.
Папка будет выбрана пользователем через диалоговое окно.
Это объявления, используемые в моем коде:
Dim wbIT As Workbook Dim wbSAP As Workbook Dim wbPGTL As Workbook Dim DataFile As String Dim LastRow As Long Dim LastCol As Long Dim LastRowIO As Long Dim LastColIO As Long Dim LastRowIOP As Long Dim LastRowFY As Long Dim i As Long Dim w As Long Dim x As Long Dim y As Long Dim z As Long Dim Folder As String Dim StrFile As String Dim findrow As Range Dim findrownumber As Long Dim LastRowPGTL As Long Dim LastRowPO As Long Dim LastRowUnique As Long Dim LastRowBewerking As Long Dim LastRowUqPO As Long Dim LastRowUqMat As Long Dim LastRowUnq As Long Dim LastRowUnq2 As Long Dim FirstRowSum As Long Dim LastRowSum As Long Dim PotentialIssue As String Dim rngDupl() As Range Dim rngCell As Range Dim rngCheck As Range Dim lduplicates As Long Dim myPath As String Dim myFile As String Dim fileType As String
Сам код (я скопировал его до такой степени, что все действия, связанные с файлом 'to be found', прекращаются):
'Ask user to define PGTL folder LastRowIO = wbIT.Sheets("Invoice overview").Range("G" & Rows.Count).End(xlUp).Row For x = 4 To LastRowIO 'Get target folder path from user With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Select Source Folder" .AllowMultiSelect = False .Show myPath = .SelectedItems(1) & "\" & wbIT.Sheets("Invoice overview").Range("G" & x).Value & "*" End With 'Specify file type fileType = "*.xls*" 'target Path with file type myFile = Dir(myPath) While (myFile <> "") If InStr(myFile, wbIT.Sheets("Invoice overview").Range("G" & x).Value) > 0 Then 'Define PGTL workbook and open it Set wbPGTL = Workbooks.Open(myFile) End If myFile = Dir Wend 'Copy to invoice tracking workbook wbPGTL.Sheets(1).Range("A1:AL30000").Copy wbIT.Sheets("PGTL").Range("A1").PasteSpecial delay (10) 'Close PGTL workbook Application.DisplayAlerts = False wbPGTL.Close SaveChanges:=False Application.DisplayAlerts = True
При каждой попытке переменная MyPath заполняется правильно, но при использовании Dir(MyPath) переменная MyFile остается пустой, что странно, поскольку файл, начинающийся с этого значения, присутствует в выбранной папке (и не открывается).
Может ли кто - нибудь помочь мне в этом вопросе?
Если вам потребуются какие-либо разъяснения, я буду более чем счастлив предоставить любую информацию, которую смогу предоставить.
Заранее благодарю вас!
Что я уже пробовал:
Я пробовал настраивать переменные по-разному, добавлять подстановочные знаки через разные переменные, пробовал другие папки, другие файлы и т. д... но так и не удалось его раскрутить.
Richard MacCutchan
Вам нужно запустить его под отладчиком макросов, чтобы увидеть, что происходит. Невозможно угадать, что не так, не запустив код в реальной системе, где находятся файлы.