将多个Excel文件导入一个Access表时如何添加文件名

将多个Excel文件导入一个Access表时如何添加文件名,excel,ms-access,vba,runtime-error,import-from-excel,Excel,Ms Access,Vba,Runtime Error,Import From Excel,我正在使用Access VBA将多个Excel文件导入Access数据库。这将是一个每月处理20-50个文件和10-60K记录的过程。我需要包括一个“应用程序名”,它不包含在电子表格文件本身中,而是包含在其文件名中。我希望通过VBA代码将应用程序名称添加到Excel文件中,而不是手动将其添加到Excel文件中 我对Access不太精通,我从搜索中找到了大部分关于如何完成的信息。这“有效”,但当我在更大的批上运行它时,我收到一个错误“运行时错误'3035:超出系统资源”。当我删除添加文件名(循环记

我正在使用Access VBA将多个Excel文件导入Access数据库。这将是一个每月处理20-50个文件和10-60K记录的过程。我需要包括一个“应用程序名”,它不包含在电子表格文件本身中,而是包含在其文件名中。我希望通过VBA代码将应用程序名称添加到Excel文件中,而不是手动将其添加到Excel文件中

我对Access不太精通,我从搜索中找到了大部分关于如何完成的信息。这“有效”,但当我在更大的批上运行它时,我收到一个错误“运行时错误'3035:超出系统资源”。当我删除添加文件名(循环记录)的部分时,它运行良好。我认为这是因为这些步骤没有有效地排序?请提供任何帮助

公共功能导入\系统\访问\报告()
作为字符串的Dim strFolder
Dim数据库作为DAO.Database
将tdf调暗为DAO.TableDef
模糊fld为刀场
作为DAO.Recordset的Dim rstTable
作为字符串的Dim strFile
作为字符串的Dim strTable
暗LNGPO尽可能长
作为字符串的Dim strExtension
尺寸与长度相同的lngFileType
作为字符串的Dim strSQL
将strFullFileName设置为字符串
使用Application.FileDialog(4)'msoFileDialogFolderPicker
如果,那就表演吧
strFolder=.SelectedItems(1)
其他的
MsgBox“未指定文件夹!“,vbCritical
退出功能
如果结束
以
如果正确(strFolder,1)“\”则
strFolder=strFolder&“\”
如果结束
strFile=Dir(strFolder&“*.xls*”)
当strFile“”时执行
lngPos=InStrRev(标准文件“.”)
strTable=“RawData”
“MsgBox”表为:“&strTable”
strExtension=Mid(strFile,lngPos+1)
选择Case-strExtension
案例“xls”
lngFileType=acSpreadsheetTypeExcel9
案例“xlsx”、“xlsm”
lngFileType=acSpreadsheetTypeExcel12Xml
案例“xlsb”
lngFileType=acSpreadsheetTypeExcel12
结束选择
DoCmd.TransferSpreadsheet_
TransferType:=导入_
电子表格类型:=lngFileType_
TableName:=strTable_
文件名:=strFolder&strFile_
HasFieldNames:=True,如果没有标题,则为False
'添加并填充新字段
'设置完整的文件名
strFullFileName=strFolder&strFile
“初始化
Set db=CurrentDb()
设置tdf=db.TableDefs(标准表格)
'将字段添加到表中。
'tdf.Fields.Append tdf.CreateField(“文件名”,dbText,255)
'创建记录集
Set rstTable=db.OpenRecordset(strTable)
rstTable.MoveFirst
'循环记录
直到rstTable.EOF为止
如果(IsNull(rstTable(“文件名”)或rstTable(“文件名”)=”),则
rstTable.Edit
rstTable(“文件名”)=strFile
rstTable.Update
如果结束
rstTable.MoveNext
环
strFile=Dir
'移动到下一个文件
环
“清理
设置fld=无
设置tdf=无
Set db=Nothing
'rstTable.Close
设置rstTable=Nothing
端函数

如果删除
记录集,代码更简单,运行时性能应该更好。您可以在每次
传输电子表格后执行
更新

Dim strFolder作为字符串
Dim数据库作为DAO.Database
将qdf设置为DAO.QueryDef
作为字符串的Dim strFile
作为字符串的Dim strTable
作为字符串的Dim strExtension
尺寸与长度相同的lngFileType
作为字符串的Dim strSQL
将strFullFileName设置为字符串
变光片作为变体
' --------------------------------------------------------
“*我遗漏了用户选择strFolder*的部分”
' --------------------------------------------------------

strTable=“RawData”如果删除
记录集,则代码更简单,运行时性能应该更好。您可以在每次
传输电子表格后执行
更新

Dim strFolder作为字符串
Dim数据库作为DAO.Database
将qdf设置为DAO.QueryDef
作为字符串的Dim strFile
作为字符串的Dim strTable
作为字符串的Dim strExtension
尺寸与长度相同的lngFileType
作为字符串的Dim strSQL
将strFullFileName设置为字符串
变光片作为变体
' --------------------------------------------------------
“*我遗漏了用户选择strFolder*的部分”
' --------------------------------------------------------
strTable=“RawData”'