VBA dir () возвращает пустую строку - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь заставить этот VBA работать. Он читает правильную файловую структуру, находит первый файл .xlsx и импортирует необходимые данные в control.xlsm.

Я замечаю, что после того, как он попадает в fileName = dir (), fileName становится пустым. Я прочитал, что он делает это, потому что он не может найти файлы, которые соответствуют критериям, но что я делаю не так?

Вот код

     Sub test_werk_final()
   Application.ScreenUpdating = False
   Application.CutCopyMode = False
   Application.DisplayAlerts = False

  Dim directory, fileName As String, sheet As Worksheet

 directory = ThisWorkbook.Path & "\"

fileName = Dir(directory & "*.xlsx")
controlFile = Dir(directory & "control.xlsm")
  lijn = 2
  MsgBox "1" & directory & "2" & fileName & "3" & controlFile
  Do Until fileName = ""
    MsgBox "1" & directory & "2" & fileName & "3" & controlFile

       Workbooks.Open fileName:=(directory & fileName)
         MsgBox "1" & directory & "2" & fileName & "3" & controlFile
naam = Sheets("Sheet2").Range("A1").Value

leeftijd = Sheets("Sheet2").Range("A2").Value

Workbooks(controlFile).Worksheets("control").Cells(lijn, 1) = naam
Workbooks(controlFile).Worksheets("control").Cells(lijn, 2) = leeftijd
For Each sheet In Workbooks(fileName).Worksheets
naam = Workbooks(fileName).Worksheets.Range("A1").Value
leeftijd = Workbooks(fileName).Worksheets.Range("A2").Value

Workbooks(controlFile).Worksheets("control").Cells(lijn, 1) = naam
Workbooks(controlFile).Worksheets("control").Cells(lijn, 2) = leeftijd
Next sheet
Workbooks(fileName).Close
  MsgBox "1" & directory & "2" & fileName & "3" & controlFile
lijn = lijn + 1
         MsgBox "1" & directory & "2" & fileName & "3" & controlFile


       fileName = Dir() ' volgende
         MsgBox "1" & directory & "2" & fileName & "3" & controlFile
 Loop
    Application.ScreenUpdating = True

Я не эксперт по кодированию, но у меня есть базовые навыки программирования.

P.S .: Я уже искал квестон на разных форумах, но не нашел ничего, что могло бы мне помочь. Может быть, я использовал неправильную строку поиска.

Заранее спасибо

1 Ответ

0 голосов
/ 27 июня 2018

Вы должны просто изменить порядок двух Dir-операторов:

controlFile = Dir(directory & "control.xlsm")
fileName = Dir(directory & "*.xlsx")

Когда вы вводите Dir -команду с параметром, начинается новый поиск в соответствии с шаблоном, который вы передаете. Dir -команда без параметра выбирает следующий файл, соответствующий этому шаблону. В вашем коде вы начали сначала поиск с подстановочными знаками, а затем второй поиск с фиксированным именем файла. Когда вы запускаете цикл, команда dir попытается найти другой файл с именем control.xlsm и, конечно, не сможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...