Ms access Access中的简单导入表单

Ms access Access中的简单导入表单,ms-access,forms,Ms Access,Forms,如何创建具有“导入excel文件”按钮的access窗体。选择excel文件后,它会自动在数据库中创建一个表格,表格标题为excel第一行,数据为excel其他行。如果您认为我没有付出任何努力,请给我建议或参考,我会自己做。如果我们假设您能够创建表单并连接按钮,您有两个问题: “文件打开”对话框 触发导入 对于1,您应该能够使用标准的Microsoft文件对话框-my VB.OLD和Access非常生锈(no Access 2007),但是您可以从Access中引用适当的COM程序集,之后就变得

如何创建具有“导入excel文件”按钮的access窗体。选择excel文件后,它会自动在数据库中创建一个表格,表格标题为excel第一行,数据为excel其他行。如果您认为我没有付出任何努力,请给我建议或参考,我会自己做。

如果我们假设您能够创建表单并连接按钮,您有两个问题:

  • “文件打开”对话框
  • 触发导入
  • 对于1,您应该能够使用标准的Microsoft文件对话框-my VB.OLD和Access非常生锈(no Access 2007),但是您可以从Access中引用适当的COM程序集,之后就变得相当容易了

    2更有趣一点-我相信你可以通过在access中选择菜单来实现这一点,在这种情况下,至少作为第一步,你应该能够自动执行相同的步骤-你可以从菜单中执行的任何操作,你也可以通过调用VBA中的相关命令来执行。更复杂的解决方案是创建VBA逻辑,创建链接到Excel文件的链接表,然后执行创建表查询,然后删除链接


    就工作而言,表单是人们希望您能够在没有太多帮助的情况下完成的事情-但是,自动从excel导入之类的事情并不一定显而易见。

    对于2003年以来的Access版本,您可以使用允许用户浏览他们想要的文件,在此之前,您可以使用。如果这对您来说太过分了,您可以在文件名和路径中输入用户类型,但是您必须使用代码检查它是否存在(Dir可能适合)


    最好使用DoCmd对象的方法(从AFAIK,1997年起的Access的任何版本中都可以获得)来导入电子表格。这可以作为VBA(代码)或宏运行。

    使用Access 2003选择文件的示例如下:

    Dim fDialog  As Office.FileDialog
    Dim strFile As String
    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    With fDialog
        .InitialFileName = "C:\temp\*.xls"
        .Filters.Clear
        .Filters.Add "Excel file", "*.xls"
        .Filters.Add "All Files", "*.*"
        If .Show = True Then
            strFile = .SelectedItems(1)
        End If
    
    End With
    
    Debug.Print strFile
    
    注意:您需要添加对Office 12对象库的引用

    要导入文件,可以使用DoCmd对象的TransferSpreadsheet函数。例如

        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "ExcelImport", strFile, True
    

    数据库中必须已经存在名为ExcelImport的Access表。

    我建议不要在任何版本的Access中使用Office文件对话框,而是使用Windows API版本。这意味着您不必处理后期绑定或维护引用。此外,MS有一个习惯,即从Office的更高版本中提取功能(例如,FileSearch对象,从Office 2007中删除),而API调用将始终有效。同样,我要说的是,正如我在Remou的回答中所做的那样,当你可以对Windows API做同样的事情,并且几乎没有更多的代码时,最好避免依赖Office库。API版本将始终有效,但MS可能有一天会选择从Office库中删除文件对话框(就像他们在Office 2007中对FileSearch对象所做的那样)。