【发布时间】:2018-06-27 08:31:30
【问题描述】:
我正在尝试让这个 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:我已经在不同的论坛上寻找了 questone,但没有找到任何可以帮助我的东西。也许我使用了错误的搜索字符串。
提前致谢
【问题讨论】:
-
您不能连续两次使用带参数的 Dir 命令。目录使用每次重置的内部状态。
-
反转前两个 Dir 行。