通用用户环境

时间:2019-05-16 14:44:13

标签: vba ms-access access-vba

我需要更新代码,以便无论文件位于哪个文件夹中都可以找到它们。

我从一个名为DB Templates的特定文件夹中获得了文件,但我需要调整代码,以便无论该文件夹位于桌面还是文档等中,都可以利用这些文件。

我当前的代码是:

Environ("USERPROFILE") & "\Desktop\DBTemplates\matrix.csv"

1 个答案:

答案 0 :(得分:2)

一种简单快捷的方法

您可以像这样使用Function来检查文件是否存在:

Function FileExists(FilePath As String) As Boolean
    Dim TestStr As String
    TestStr = ""
    On Error Resume Next
    TestStr = Dir(FilePath)
    On Error GoTo 0
    If TestStr = "" Then
        FileExists = False
    Else
        FileExists = True
    End If
End Function

此时,您可以简单地尝试加载文件,如本例所示:

desktopPath = Environ("USERPROFILE") & "\Desktop\DBTemplates\matrix.csv"
documentsPath = Environ("USERPROFILE") & "\Documents\DBTemplates\matrix.csv"

if FileExists(desktopPath) then loadFile(desktopPath)
if FileExists(documentsPath) then loadFile(documentsPath)
'Add any other Path you want to check...

替代方式

使用此方法,您可以搜索文件,然后将其加载。

Sub FindMyFile()
    Debug.Print Search(Environ("USERPROFILE"), "matrix.csv")
End Sub

Function Search(sPath As String, fileToFind As String) As String

    Dim FSO As New FileSystemObject
    Dim myFolder As Folder
    Dim mySubFolder As Folder
    Dim myFile As File

    Set myFolder = FSO.GetFolder(sPath)

    For Each mySubFolder In myFolder.SubFolders
        On Error Resume Next
        For Each myFile In mySubFolder.Files
            If myFile.Name = fileToFind Then
                Debug.Print myFile.Name & " in " & myFile.Path 'Or do whatever you want with the file
                Exit For
            End If
        Next
        Search = Search(mySubFolder.Path, fileToFind)
    Next

End Function
  

注意:请注意,此方法可能需要很长时间(很长时间)才能找到文件。仅在没有其他选择或选择没有很多文件夹/文件的根目录时使用此选项。

希望这会有所帮助。