VBA dir()返回空字符串

时间:2018-06-27 08:31:31

标签: vba directory

我正在尝试使此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 :(得分:1)

您应该简单地更改两个Dir语句的顺序:

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

当您发出带有参数的Dir命令时,将根据您传递的模式开始新的搜索。 Dir-不带参数的命令将提取与该模式匹配的下一个文件。在您的代码中,您首先使用通配符搜索,然后使用固定文件名进行第二搜索。当您开始循环时,dir命令将尝试查找名称为control.xlsm的另一个文件,当然会失败。