我在试着让这个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我不是一个编程专家,但我拥有基本的编程技能。
记者:我已经在不同的地方找过了,因为我找不到任何可以帮助我的东西。也许我用错了搜索字符串。
提前感谢
发布于 2018-06-27 08:39:36
您应该简单地更改两个Dir-语句的顺序:
controlFile = Dir(directory & "control.xlsm")
fileName = Dir(directory & "*.xlsx")当您发出带有参数的Dir-command时,将根据您传递的模式启动新的搜索。没有参数的Dir-command将获取与该模式匹配的下一个文件。在您的代码中,首先使用通配符开始搜索,然后使用固定的文件名进行第二次搜索。当您启动循环时,dir-command将尝试查找另一个名为control.xlsm的文件,当然会失败。
https://stackoverflow.com/questions/51058113
复制相似问题