为什么我的文件搜索不起作用?

时间:2014-03-13 14:52:22

标签: vba file-io

在进行程序的下一步之前,我正在检查以确保我的代码能够看到我的文件。这是我的代码,但它始终显示为不存在的路径。我做错了吗?

Sub NewNameiLoop()
    Dim i As Double
    Dim NameStr As String
    Dim NewNamePath As String

    NameStr = Renamer.New_Name.Text
    NewNamePath = Renamer.Path_Text.Text & "\" + NameStr & "-" & Right("00" & i, 3) & ".ipt"

    Do While i < 99                               'Counts with the file name up to -099
        i = i + 1
        If vbOK Then
            MsgBox (Renamer.Path_Text.Text & "\" + NameStr & "-" & Right("00" & i, 3))
            If Dir(NewNamePath) <> "" Then
                MsgBox "Path Exists."
            Else: MsgBox "Path does not exist."
            End If
        Else: Exit Sub
        End If
    Loop
End Sub

其他信息:

此代码位于子NewNameiLoop中的NewNameLoop模块中。

它所采用的形式称为Renamer。当用户单击“应用”以重命名某些文件时,表单将调用NewNameiLoop。重命名后,他们调用此代码来检查文件是否存在。

显示的MsgBox包含完整,正确的路径。

这是在Autodesk Inventor中,而不是Excel中!到目前为止,编码几乎是一样的。没有奇怪的怪癖或任何东西。

Accessing C:\

Accessing anything within C:\

正在发生的事情的JPEG。如下所述,我能够访问C:\和C:中的东西。我程序的第一部分创建了一个全新的文件夹,并将不同文件夹的内容复制到其中。之后,它将转到原始文件夹并重命名所有文件。那么这是否意味着它确实是一个编码问题?似乎没有人知道。

2 个答案:

答案 0 :(得分:1)

是的,显然你不能在那个文件夹上做'Dir'。但您可以使用FileSystemObject。 将项目引用添加到“Microsoft Scripting Runtime” 然后采用以下方法:

Dim oFSO As FileSystemObject
Set oFSO = New FileSystemObject
If oFSO.FileExists(NewNamePath) Then
    Debug.Print "Found it"
Else
    Debug.Print "Not Found"
End If
Set oFSO = Nothing

答案 1 :(得分:1)

如果出现以下情况,Dir将不返回任何内容:
1).ipt文件不存在或文件名与您编码的文件名不同 2)无法访问文件夹

如果您不关心文件名,我建议将NewNamepath保留为Renamer.Path_Text.Text&amp; &#34; \&#34;并在此路径中搜索您要查找的文件