首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA dir()返回空字符串

VBA dir()返回空字符串
EN

Stack Overflow用户
提问于 2018-06-27 08:31:30
回答 1查看 5.8K关注 0票数 0

我在试着让这个vba发挥作用。它读取正确的文件结构,并找到第一个.xlsx,并将所需的数据导入control.xlsm。

我注意到,在到达fileName = dir()之后,fileName变为空。我读到它这样做是因为它找不到符合标准的文件,但我做错了什么呢?

这是代码

代码语言:javascript
复制
     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

我不是一个编程专家,但我拥有基本的编程技能。

记者:我已经在不同的地方找过了,因为我找不到任何可以帮助我的东西。也许我用错了搜索字符串。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 08:39:36

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

代码语言:javascript
复制
controlFile = Dir(directory & "control.xlsm")
fileName = Dir(directory & "*.xlsx")

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51058113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档