0

我用谷歌搜索并找到了部分问题的答案,但不是完整的问题。我想在 Excel VBA 中使用 Application.GetOpenFilename 打开一个文件,我希望它在与 ThisWorkbook.Path 相同的目录中打开。我发现事先我可以做到

OpenPath = ThisWorkbook.Path
ChDrive OpenPath
ChDir OpenPath

但是,在运行之后,如果我运行任何其他 Application.GetOpenFilename 它仍然会访问同一个目录(直到我关闭 Excel ???)。但是,我希望它恢复到默认目录(不管那是什么)。在我的计算机上,它是 Windows XP,它恰好是 MyDocuments。但是,使用它的一些人可能有 XP,而另一些人可能有 Windows 7。我找不到任何地方如何找出原始默认目录是什么,以便我可以存储它,以便以后可以重置为默认值. 任何帮助将非常感激。

4

5 回答 5

6

所以,这可能是解决方案:

Dim StartingDir as string
    StartingDir = CurDir

'...your code here

ChDir StartingDir    'just before you leave

如有必要,请与Drive.

于 2013-03-28T14:53:03.597 回答
3

我很难回答这个问题,因为 ChDir 和 ChDrive 在我的网络文件夹中不起作用。这是我在论坛中发现的,效果出奇的好:

Private Declare Function SetCurrentDirectoryA Lib _
"kernel32" (ByVal lpPathName As String) As Long

Sub SetUNCPath(sPath As String)
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(sPath)
If lReturn = 0 Then MsgBox "Error setting path."
End Sub
于 2018-03-19T08:57:24.287 回答
1

这可能是你想要的

dim sStarDir as string
sStarDir=curDir
... do all you stuff
' now reset!
Application.DefaultFilePath=sStarDir

菲利普

于 2013-03-28T15:04:49.700 回答
1

只需将其放在application.getopenfilename()

ChDir "C:"

例如:

ChDir "C:\userjjjj"

myfile = Application.GetOpenFilename()
'Open the file selected
Workbooks.Open (myfile)
于 2018-04-11T12:53:44.367 回答
0

使用下一个代码正在工作

' declare the variable as string
Dim ruta As String
' get the dir of the current workbook
ruta = ThisWorkbook.Path & "\"
' this line set the dir as the same of the workbook
ChDir ruta 
' open a book in the same directory of the current book
Workbooks.Open(Application.GetOpenFilename)
于 2019-12-04T00:14:57.193 回答