Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用文件对话框选择文件,然后复制、粘贴、重命名、删除_Vba_Ms Access - Fatal编程技术网

Vba 使用文件对话框选择文件,然后复制、粘贴、重命名、删除

Vba 使用文件对话框选择文件,然后复制、粘贴、重命名、删除,vba,ms-access,Vba,Ms Access,在Access(2016)中,我试图从我们在工作中使用的供应商处导入各种Excel文件。它们的格式都不同,所以我需要在Access中为每一个设置一个特定的已保存导入。然后,我希望用户能够单击导入按钮,将excel文件导入数据库 我最初使用了Runsavedimportexport命令,但该命令有一个静态文件路径,我不完全理解transferspreadsheet以便能够使用它 我的问题是,如何使用FileDialog打开文件选择器,让我的用户选择一个文件(可能是从桌面),然后将其保存为变量以运行

在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

'假设您添加了对Microsoft脚本库的引用以进行文件系统操作


'假设您已为文件对话框添加了对Microsoft Office Object 16库的引用

'假设您使用“外部数据”选项卡保存了从名为c:\yourdirectory\importme.xlsx的隐藏文件中导入的部分内容

'假设您还将这些导入的名称存储在一个名为QueryNames的access表中

然后创建一个带有列表框和按钮的表单。将listbox的rowsource设置为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 Sub
有用的链接

'假设您添加了对Microsoft脚本库的引用以进行文件系统操作


'假设您已为文件对话框添加了对Microsoft Office Object 16库的引用

'假设您使用“外部数据”选项卡保存了从名为c:\yourdirectory\importme.xlsx的隐藏文件中导入的部分内容

'假设您还将这些导入的名称存储在一个名为QueryNames的access表中

然后创建一个带有列表框和按钮的表单。将listbox的rowsource设置为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 Sub
有用的链接

要“把所有的东西都绑在一起”到底有什么困难?使用所选项目设置变量。使用FileDialog CopyFile或访问内在函数FileCopy复制具有不同名称的文件。使用Kill()删除文件。当您有一个带有特定问题(如错误消息)的过程时,发布问题。应重新打开此问题。这不是一个重复的问题,当它已经有了一个本应该明确的答案时,它就结束了。这个问题的原始版本已经有7年历史了,不再有效,因为它现在需要引用Microsoft脚本库。此外,这个问题还涉及保存的查询、Excel文件,以及如何处理文件对话框和复制等问题。要“将所有内容结合起来”到底有何困难?使用所选项目设置变量。使用FileDialog CopyFile或访问内在函数FileCopy复制具有不同名称的文件。使用Kill()删除文件。当您有一个带有特定问题(如错误消息)的过程时,发布问题。应重新打开此问题。这不是一个重复的问题,当它已经有了一个本应该明确的答案时,它就结束了。这个问题的原始版本已经有7年历史了,不再有效,因为它现在需要引用Microsoft脚本库。这个问题还涉及保存的查询、Excel文件,以及如何创建文件对话框和复制等问题。