繁体   English   中英

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

[英]Read a path to a folder from a Excel-Workbook cell using vba

我有以下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 

有用! (但是,为什么?,可能我不理解With定义。 )但是,在下一步中

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

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

在我看来,这些错误相当随意,根据我的经验,同时处理多个工作表时可能会发生。 也许更换

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中命名工作表对象(在属性窗口中编辑(名称)属性)。

希望能有所帮助。

PS由于您使用Dir()函数,因此我相信您知道为了获取第二个文件,您必须反复调用它(可能是循环调用)而不提供目录。

dir返回path \\ pattern中要递归的第一个文件,您需要执行DIR(“”)传递一个空字符串

在此处输入图片说明

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

这段代码没有什么不对劲,您可能是在写工作表的名称不对吗?

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

不要忘记使用“。” 使用with语句时,在“表格”之前

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

该代码不起作用的主要原因可能是因为有多个以“ * .xl ??”结尾的文件 在那个文件夹里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM