b.wag Ответов: 1

Как открыть файл в определенной папке с именем файла, начинающимся с переменной?


Привет,

Я пытаюсь найти файл в определенной папке. Имя файла состоит из уникальной переменной, а затем некоторых случайных чисел и всегда будет в формате .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

Вам нужно запустить его под отладчиком макросов, чтобы увидеть, что происходит. Невозможно угадать, что не так, не запустив код в реальной системе, где находятся файлы.

1 Ответов

Рейтинг:
4

b.wag

Вопрос решен. Решение включало добавление некоторых операторов IF для "обработки ошибок".