Dir()如何在VBA中工作

时间:2016-05-09 13:39:26

标签: excel vba file

在我当前的VBA代码中,我生成了一个名为myFileName的变量,并且在我检查文件是否存在时想要将其用作参数但是我收到错误消息“运行时错误52,文件名或数字错误”我使用Dir命令。

有趣的是,如果我手动键入文件路径到Dir命令而不是使用myFileName变量,那么它的工作没有问题。 (没有拼写错误,我可以在读取或写入文件时使用myFileName,它只会丢弃Dir命令的错误)

任何想法如何让Dir(myFileName)工作?

    Set fs = CreateObject("Scripting.FileSystemObject")

    myFileName = Environ("USERPROFILE") & "\Application Data\myFile.txt"

    If Dir(myFileName) = "" Then
        Set a = fs.CreateTextFile(myFileName, True)
        a.Write ("0")
        a.Close
    End If

2 个答案:

答案 0 :(得分:2)

\Application Data不是文件夹,而是快捷方式。请改用LOCALAPPDATAAPPDATA

myFileName = Environ("LOCALAPPDATA") & "\myFile.txt"
myFileName = Environ("APPDATA") & "\myFile.txt"

答案 1 :(得分:0)

你的问题是:

myFileName = Environ("USERPROFILE") & "\Application Data\myFile.txt"

应该是

myFileName = Environ("USERPROFILE") & "\Application Data" & "\" & "myFile" & ".txt"

这是一个常见问题,非常值得肯定您必须插入最后一个正斜杠。 IDK为什么vba会这样读,但这是解决方法

我刚刚运行了这个没有问题并创建了文件。

Private Sub createafile()
    Set fs = CreateObject("Scripting.FileSystemObject")

    myFileName = Environ("USERPROFILE") & "\Desktop" & "\" & Format(Date, "ddmmyyyy") & ".xlsm"

    If Dir(myFileName) = "" Then
        Set a = fs.CreateTextFile(myFileName, True)
        a.Write ("0")
        a.Close
    End If
End Sub