如何转换Excel文件,然后一步导入到Access?

时间:2017-06-20 19:47:54

标签: excel vba excel-vba ms-access

我昨天发布了这个问题,但有人建议我再问一次,详细一点。

我有几个(+1000)原始文件需要转换,最终导入Access

。我已经写了一个可以做到这一点的Excel宏。它相当广泛,并且有大量的操作,但是要点'它在下面。它要求用户选择一些文件,然后将文件保存到与原始原始文件相同的目录中。它被称为ConvertWithDialog,为了节省空间,它位于下面的Paste中。



<script src="https://pastebin.com/embed_js/2cfKLbAr"></script>
&#13;
&#13;
&#13;

我还有一个没有对话框的版本,可以通过单独的函数将文件传递给它来运行。

&#13;
&#13;
<script src="https://pastebin.com/embed_js/9AB8VKgL"></script>
&#13;
&#13;
&#13;

我的问题是导入Access。如何转换多个文件并一步导入Access(在Access中按一个按钮)?我不想运行转换功能,等待文件完成转换,然后导入Access。我按照之前用户的建议尝试了this,但是当我添加了所显示的参数时,VBA引发了一个错误,说“&#39; =&#39;预计。我有一个宏来批量导入Access文件,并且可以包含它。但它并不是很优雅,而且我确信无论如何我最终还是必须采用不同的方式。

1 个答案:

答案 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