Access调用Excel GetOpenFileName时如何设置默认文件路径
问题原因
你当前使用的ChDrive、ChDir是修改Access进程本身的工作路径,不会作用于你单独创建的Excel实例对象,因此调用Excel的GetOpenFilename时不会生效。
解决方案1:直接修改Excel实例的默认打开路径
修改你创建的Excel对象的DefaultFilePath属性即可指定选择框的默认路径,不需要调用ChDrive/ChDir,用完还可以还原用户原本的默认路径避免影响用户后续使用:
Set ExcelApp = CreateObject("Excel.Application") ExcelApp.Visible = True ' 先保存用户原本的Excel默认路径 Dim originalPath As String originalPath = ExcelApp.DefaultFilePath ' 设置你需要的默认路径 ExcelApp.DefaultFilePath = "V:\Accounting\Projects\In Work\Project Database\" RawData = "" RawData = ExcelApp.Application.GetOpenFilename ' 还原用户原本的默认路径 ExcelApp.DefaultFilePath = originalPath Set ExcelApp = Nothing If RawData <> "False" Then ' 增加取消判断,避免用户点关闭后代码报错 DoCmd.TransferText acImportDelim, , "tbl_Stage", RawData, True End If
解决方案2:使用Access自带的文件选择框(更推荐)
你只是需要获取CSV文件的路径,完全不需要额外启动Excel实例,直接用Access自带的FileDialog即可,资源占用更低,逻辑也更简单,还可以直接限制可选的文件格式:
Dim fileDialog As Object Dim RawData As String Set fileDialog = Application.FileDialog(3) ' 3对应文件选择器常量msoFileDialogFilePicker With fileDialog .InitialFileName = "V:\Accounting\Projects\In Work\Project Database\" .Filters.Clear .Filters.Add "CSV数据文件", "*.csv" ' 限制仅显示CSV文件,降低用户选错概率 .AllowMultiSelect = False If .Show = -1 Then ' 用户选中文件点击确认后执行导入 RawData = .SelectedItems(1) DoCmd.TransferText acImportDelim, , "tbl_Stage", RawData, True End If End With Set fileDialog = Nothing
内容的提问来源于stack exchange,提问作者Shaves
相关产品推荐
相关产品推荐

