Access 中的简单导入表单
Posted
技术标签:
【中文标题】Access 中的简单导入表单【英文标题】:simple import form in Access 【发布时间】:2009-11-30 08:03:41 【问题描述】:如何创建具有导入 excel 文件按钮的访问表单。选择 excel 文件后,它会自动在数据库中创建一个表,其中列标题作为 excel 第一行,数据作为 excel 其他行。如果您认为我没有付出任何努力,请给我建议或参考,我自己做不好。
【问题讨论】:
【参考方案1】:对于自 2003 年以来的 Access 版本,您可以使用 File Dialog
允许用户浏览他们想要的文件,在此之前,您可以使用 API calls
。如果这对您来说太过分了,您可以让用户输入文件名和路径,但您必须使用代码检查它是否存在(Dir 可能适合)。
最好使用 DoCmd 对象的TransferSpreadsheet
方法(在任何版本的 Access 中可用,AFAIK,1997 及以后)来导入电子表格。这可以作为 VBA(代码)或宏运行。
【讨论】:
我建议不要在任何版本的 Access 中使用 Office 文件对话框,而是使用 Windows API 版本。这意味着您不必为后期绑定或维护引用而烦恼。此外,MS 习惯于从更高版本的 Office 中提取功能(例如,从 Office 2007 中删除的 FileSearch 对象),而 API 调用将始终有效。【参考方案2】:如果我们假设您能够创建一个表单并连接一个按钮,那么您有两个问题:
-
文件打开对话框。
触发导入。
对于 1,您应该能够使用标准的 Microsoft 文件对话框 - 我的 VB.OLD 和 Access 非常生锈(2007 年无法访问),但您可以从 Access 引用适当的 COM 程序集,之后变得相当容易。
2 更有趣一些——我相信你几乎可以通过从访问权限中选择菜单来做到这一点,在这种情况下,至少作为第一步,你应该能够自动化相同的步骤——几乎任何你能做到的事情从菜单中执行您也可以通过从 VBA 调用相关命令来执行。更复杂的解决方案是创建 VBA 逻辑来创建链接到 Excel 文件的链接表,然后执行创建表查询,然后删除链接。
就工作量而言,表单是人们期望您能够在没有太多帮助的情况下完成的事情 - 但是自动化诸如从 excel 导入之类的事情并不一定很明显。
【讨论】:
【参考方案3】:使用 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 表必须已经存在于数据库中。
【讨论】:
再一次,我想说,就像我对 Remou 的回答所做的那样,当您可以使用 Windows API 做同样的事情并且几乎没有更多代码时,最好避免依赖 Office 库。 API 版本将始终有效,但 MS 可能有一天会选择从 Office 库中删除文件对话框(就像他们对 Office 2007 中的 FileSearch 对象所做的那样)。以上是关于Access 中的简单导入表单的主要内容,如果未能解决你的问题,请参考以下文章
如何在从 Excel 导入的表中的 Access 中分配外键