我知道这个问题已被反复询问,但我无法遵循我找到的任何指南。
我是一个初学者,使用Access和编写VBA,所以我找到了一些代码,可以帮助我将大量文件导入Access中的单独表格。
我已经尝试了几种将代码放入并从宏或按钮调用的变体......它们都没有成功。
代码可能有问题,但我不太了解这个问题。在尝试调用该函数时,我也非常确定我做了别的错误。请帮我!
以下是代码:
Option Compare Database
Option Explicit
Function DoImport()
Dim strPathFile As String, strFile As String, strPath As String
Dim strTable As String
Dim blnHasFieldNames As Boolean
' Change this next line to True if the first row in EXCEL worksheet
' has field names
blnHasFieldNames = True
' Replace C:\Documents\ with the real path to the folder that
' contains the EXCEL files
strPath = "C:\Documents and Settings\user\Desktop\folder"
' Replace tablename with the real name of the table into which
' the data are to be imported
strTable = "tablename"
strFile = Dir(strPath & "*.xls")
Do While Len(strFile) > 0
strPathFile = strPath & strFile
strTable = Left(strFile, Len(strFile) - 4)
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
strTable, strPathFile, blnHasFieldNames
' Uncomment out the next code step if you want to delete the
' EXCEL file after it's been imported
' Kill strPathFile
strFile = Dir()
Loop
End Function
答案 0 :(得分:0)
要调用此过程,它需要存在于按钮所在的当前表单中,或者位于自己的模块中。
因为函数没有返回值或者有任何参数来调用它,所以你可以在按钮的On Click事件中键入以下VBA代码:
DoImport
如果您希望确保代码实际运行,您可以通过在可执行的代码行上按F9来设置断点
或者在要调试的地方输入“停止”一词
在您对文字字符串进行更改之前,代码本身不会非常有用,因为代码注释建议
现在的代码本身不是非常可重用的,所以下一步你应该使用参数进行研究,所以当你在运行时调用函数时,你可以提供文件夹名称和表名等。
代码本身将在特定文件夹中搜索Excel文件,并尝试使用文件名作为表名将每个文件导入Microsoft Access。
答案 1 :(得分:0)
如何创建新模块并将以下代码粘贴到其中。保存并随意命名。
Public Function DoImport(strPath AS String, strTable AS String, _
blnHasFieldNames AS Boolean, RemoveFile AS Boolean)
Dim strFile As String
strFile = Dir(strPath & "*.xls")
Do While Len(strFile) > 0
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, _
strPath & strFile, blnHasFieldNames
if RemoveFile Then Kill strPath & strFile
strFile = Dir()
Loop
End Function
然后您可以通过以下方式调用该函数:
DoImport "C:\imports\Excel\", "MyTableName", True, True
这允许您传递路径,表名,文件是否包含字段名以及是否要在导入后删除文件。这样你就不必经常改变函数的代码。