VBA打开Excel文件 – 对话框更改

我正在运行一个Excel VBA脚本,在我试图打开一个对话框来select一个Excel文件,并打开该Excel文件。 我尝试给出文件夹的path,以便最终用户可以直接进入该文件夹并select他想要的文件。

但是,它第一次运行正常,但下次运行时会打开最终用户上次select文件的文件夹。

这里是我的代码,

thisYear = Year(Date) 'change the display name of the open file dialog Application.FileDialog(msoFileDialogOpen).Title = _ "Select Input Report" 'Remove all other filters Application.FileDialog(msoFileDialogOpen).Filters.Clear 'Add a custom filter Call Application.FileDialog(msoFileDialogOpen).Filters.Add( _ "Excel Files Only", "*.xls*") 'Select the start folder Application.FileDialog(msoFileDialogOpen _ ).InitialFileName = "\\driveA\Reports\" & thisYear & "" file = Application.FileDialog(msoFileDialogOpen).Show Application.FileDialog(msoFileDialogOpen).Execute 

如何解决这个问题?

最好使用对象variables而不是重复调用Application.FileDialog因为每个对Application.FileDialog调用都可能被视为该类的新实例,这可能解释了您的问题。 这是我还没有testing的假设,我不是100%,但似乎是合理的。

改为:

 Dim fdlg as FileDialog Set fdlg = Application.FileDialog(msoFileDialogOpen) 'change the display name of the open file dialog fdlg.Title = "Select Input Report" 'Remove all other filters fdlg.Filters.Clear 'Add a custom filter fdlg.Filters.Add "Excel Files Only", "*.xls*" 'Select the start folder fdlg.InitialFileName = "\\driveA\Reports\" & thisYear & "" 'Display to user: fdlg.Show 'Ensure selection: If fdlg.SelectedItems.Count <> 0 Then 'Captures the filename chosen: file = fdlg.SelectedItems(1) 'Then, you probably want to open it: Set wb = Workbooks.Open(file) Else 'no file is selected, add error-handling or inform user, exit sub early, etc. End If 

在调用你的对话框之前添加这个:

ChDir "\\path\to\my\desired\folder\"

然后使用CurDir()而不是该文件夹的显式path。

如果您还需要更换驱动器,请使用:

ChDrive "X"

也请阅读这里 。