在Access (2016)中,我试图从我们工作中使用的供应商那里导入各种Excel文件。它们的格式都不同,所以我需要在Access中为每个文件设置一个特定的已保存导入。然后,我希望用户能够单击导入按钮,并将excel文件导入到数据库中。
我最初使用的是Runsavedimportexport命令,但该命令有一个静态文件路径,并且我不能完全理解transferspreadsheet,因此无法使用它。
我的问题是,如何使用FileDialog打开文件选择器,让我的用户选择一个文件(可能是从桌面),然后将其保存为运行CopyFile的变量。在CopyFile运行并粘贴副本后,重命名为特定名称,运行runsavedimportexport,然后删除该文件。
我已经找到了每个代码的所有不同参数,但我正在努力将它们联系在一起。
到目前为止我所能做的就是
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
f.Show发布于 2020-10-11 18:49:06
‘假设您已经添加了对Microsoft脚本库的引用,用于文件系统操作
‘假设您已经为文件对话框添加了对Microsoft Office Object 16库的引用
‘假设您已经使用外部数据选项卡保存了一些来自名为c:\yourdirectory\importme.xlsx的隐藏文件的导入
‘假设您还将这些导入的名称存储在名为QueryNames的access表中
然后创建一个包含列表框和按钮的窗体。将列表框的行源设置为QueryNames表,并将listbox.multiselect设置为none。
代码如下:
Private Sub cmdImportData_Click()
Dim fso As FileSystemObject
Dim filedialog As Office.filedialog
Dim filepath As String
dim targetpath as string: targetpath = c:\yourdirectory\importme.xlsx
Set fso = New FileSystemObject
Set filedialog = Application.filedialog(msoFileDialogFilePicker)
filedialog.AllowMultiSelect = False
If filedialog.Show = True Then
filepath = filedialog.SelectedItems(1)
fso.CopyFile filepath, targetpath, True
Dim FirstQueryID As Integer: FirstQueryID = 1 ''crude way to select between 2 stored queries
Dim SecondQueryID As Integer: SecondQueryID = 2
If listboxofQueryNames = FirstQueryID Then
DoCmd.RunSavedImportExport ("MyFirstSavedQuery")
fso.DeleteFile targetpath
End If
Else
DoCmd.RunSavedImportExport ("MySecondSavedQuery")
fso.DeleteFile targetpath
End If
End Subhttps://docs.microsoft.com/en-us/office/vba/api/access.application.filedialog Copy and paste a file through access vba的帮助链接
https://stackoverflow.com/questions/64285407
复制相似问题