我昨天发布了这个问题,但有人建议我再问一次,详细一点。
我有几个(+1000)原始文件需要转换,最终导入Access
。我已经写了一个可以做到这一点的Excel宏。它相当广泛,并且有大量的操作,但是要点'它在下面。它要求用户选择一些文件,然后将文件保存到与原始原始文件相同的目录中。它被称为ConvertWithDialog,为了节省空间,它位于下面的Paste中。
<script src="https://pastebin.com/embed_js/2cfKLbAr"></script>
&#13;
我还有一个没有对话框的版本,可以通过单独的函数将文件传递给它来运行。
<script src="https://pastebin.com/embed_js/9AB8VKgL"></script>
&#13;
我的问题是导入Access。如何转换多个文件并一步导入Access(在Access中按一个按钮)?我不想运行转换功能,等待文件完成转换,然后导入Access。我按照之前用户的建议尝试了this,但是当我添加了所显示的参数时,VBA引发了一个错误,说“&#39; =&#39;预计。我有一个宏来批量导入Access文件,并且可以包含它。但它并不是很优雅,而且我确信无论如何我最终还是必须采用不同的方式。
答案 0 :(得分:0)
通过TransferSpreadsheet(VBA)从单个文件夹中的所有EXCEL文件导入数据
从位于单个文件夹中的所有EXCEL文件中的第一个(或唯一)工作表导入数据的通用代码。所有EXCEL文件的工作表必须具有相同布局和格式的数据。
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 = False
' Replace C:\Documents\ with the real path to the folder that
' contains the EXCEL files
strPath = "C:\Documents\"
' 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
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