VBA在使用用Application.GetOpenFilename时如何设定对话框打开路径?
另外,在VBA里试着修改“默认文件位置”的方法(Application.DefaultFilePath=ThisWorkbook.Path),在运行代码之后,马上查看“选...
另外,在VBA里试着修改“默认文件位置”的方法(Application.DefaultFilePath = ThisWorkbook.Path),在运行代码之后,马上查看“选项-常规”时,“默认文件位置”已经的确改为当前文件所在的位置了,可是点击“打开文件”对话框时,却不是当前位置而依然是你“上一次”打开的位置!呵呵,我晕菜了。
是否有其他关键点我没有弄好么?还请大师多为指教。谢谢! 展开
是否有其他关键点我没有弄好么?还请大师多为指教。谢谢! 展开
1个回答
展开全部
您好,
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询