VBA在使用用Application.GetOpenFilename时如何设定对话框打开路径?

另外,在VBA里试着修改“默认文件位置”的方法(Application.DefaultFilePath = ThisWorkbook.Path),在运行代码之后,马上查看“选项-常规”时,“默认文件位置”已经的确改为当前文件所在的位置了,可是点击“打开文件”对话框时,却不是当前位置而依然是你“上一次”打开的位置!呵呵,我晕菜了。
是否有其他关键点我没有弄好么?还请大师多为指教。谢谢!

您好,

Application.GetOpenFilename 方法不具备这种功能的!

 

替代方案如下:

Sub Demo()
    With Application.FileDialog(msoFileDialogOpen)
        .InitialFileName = "D:\"
        .Show
    End With
End Sub

 如果实在要用 Application.GetOpenFilename 方法,可以在调用之前加两行代码,比如需要在打开前定位到的目录为 “D:\123”,那么可以这样写:

ChDrive "D:\"
ChDir "D:\123"
Application.GetOpenFilename

 

注意,这里的 ChDrive 和 ChDir 两个函数都不是 Unicode 函数,如果您的目录包括 Unicode 字符,则执行代码时会报错!因此,从兼容 Unicode 的角度来讲,还是不推荐这个方法。

追问

非常感谢您的答复!
其实,我最终是想通过Application.GetOpenFilename来直接打开当前文件所在的位置,而事先不必确定在哪个具体位置的。获得当前工作簿所在的位置倒是简单,我是想通过“打开文件”对话框的方式来直接指向目的地读取同位置的目标文件。

追答

试下这个:

Sub Demo()
    Dim strCurPath As String    ' 应用程序的当前路径.
    Dim strWbkPath As String    ' 工作簿所在的路径.    

    On Error GoTo ERR_EXCEPTION    

    strCurPath = CurDir$
    strWbkPath = ThisWorkbook.Path    

    ' /* 应用程序的当前路径不是工作簿所在的路径. */
    If StrComp(strCurPath, strWbkPath) <> 0 Then
        ChDrive strWbkPath
        ChDir strWbkPath
    End If
    
    Application.GetOpenFilename

    Exit Sub    

ERR_EXCEPTION:

    MsgBox Err.Description, vbCritical, "Error"
End Sub

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网