我有以下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
尝试了一切,但没有成功!
答案 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)
答案 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 ??"结尾。在该文件夹中