使用vba从Excel-Workbook单元格中读取文件夹的路径

时间:2016-08-22 11:31:09

标签: vba excel-vba excel

我有以下VBA代码

Dim directory As String, fileName As String
directory = "C:\User\Work\scorix\test_excel\"
fileName = Dir(directory & "*.xl??")

现在我想更改代码,以便我能够从给定的Excel-Workbook单元格中读取路径,然后构建fileName。 如果我试试

directory = Worksheets("Summary").Range("B2").Value
fileName = Dir(directory & "*.xl??")

它不起作用。这意味着在一天结束时directory为空,因此fileName为空。 在下一步我尝试了

  With ThisWorkbook
    directory = Sheets("Summary").Range("B2").Value
  End With 

它有效! (但是,为什么?,可能我不理解definition of With) 但是,在下一步中

fileName = Dir(directory & "*.xl??")

filename仍然是空的。我用ActiveSheet尝试了一切,但没有成功!

3 个答案:

答案 0 :(得分:3)

在我看来,这些错误发生得相当随意,根据我的经验,在同时使用多个工作表时会发生这种情况。也许替换

directory = Worksheets("Summary").Range("B2").Value

directory = ThisWorkbook.Worksheets("Summary").Range("B2").Value

或者(我更喜欢使用范围)

directory = ThisWorkbook.Worksheets("Summary").Cells(2, 2).Value

或者

With ThisWorkbook
    ' notice the dot in Front of "worksheets"
    directory = .Worksheets("Summary").Range("B2").Value
End With

解决问题。

另一种情境方法可能是在VBA-Editor中命名Sheet-objects(在属性窗口中编辑(Name)属性)。

希望有所帮助。

P.S。 由于您使用Dir() - Function,我相信您知道为了获得第二个+文件,您必须重复调用它(可能是循环)而不提供目录。

答案 1 :(得分:1)

dir返回path \ pattern中的第一个文件 为了递归你需要做DIR("")传递一个空字符串

enter image description here

答案 2 :(得分:1)

directory = Worksheets("Summary").Range("B2").Value
fileName = Dir(directory & "*.xl??")

这段代码没有任何问题你可能会错误地写出工作表的名称吗?

 With ThisWorkbook
   directory = Sheets("Summary").Range("B2").Value
 End With 

不要忘记使用"。"之前"表"当你使用陈述时

fileName = Dir(directory & "*.xl??")

此代码无法正常工作的主要原因是因为有多个文件以" *。xl ??"结尾。在该文件夹中