通过VBA导入MS Excel工作表到MS Access不导入一切

我有一个MS Access数据库程序,从MS Excel工作簿(它只有一张纸),然后处理,并为用户踢出一个完整的表格的数据带来的数据。

整个事情工作正常,但是当他们在报告中遇到错误时,我去找数据库程序来找出问题,并且出现了一个新的问题。 MS Access只导入单元格A1和A2。

当我尝试手动导入Excel文件并附加到表时,导入向导只显示这两个单元格包含在文件中。 不知何故,MS Access没有看到整个数据表。

我已经尝试手动更改DoCmd.TransferSpreadsheet中的acSpreadsheetType选项,它曾经工作过一次。 我也尝试以编程方式更改它没有任何效果(即,我仍然只获取单元格A1和A2)。

下面是处理这部分程序的VBA部分:

Dim acSpreadsheetType As Integer strFile2Import = txtFindFile acSpreadsheetType = ExcelVersion(strFile2Import) DoCmd.Hourglass (HourglassOn) DoCmd.SetWarnings (WarningsOff) DoCmd.RunSQL _ "DELETE tbl_Work_Plan_Item_Import.*, * " & _ "FROM tbl_Work_Plan_Item_Import;" DoCmd.TransferSpreadsheet _ acImport, acSpreadsheetType, "tbl_Work_Plan_Item_Import", strFile2Import, True 

这里是“ExcelVersion”函数:

 Public Function ExcelVersion(ByVal strFile2Import As String) 'https://msdn.microsoft.com/en-us/library/office/ff840717.aspx 'https://msdn.microsoft.com/en-us/library/office/ff198017.aspx Set objapp = CreateObject("Excel.Application") objapp.Visible = True Set wb = objapp.workbooks.Open(strFile2Import, True, False) ExcelVersion = wb.FileFormat wb.Close objapp.Quit Set objapp = Nothing Select Case ExcelVersion Case 29 'xlExcel3 (Excel3) ExcelVersion = 0 'acSpreadsheetTypeExcel3 (Microsoft Excel 3.0 format) Case 33 'xlExcel4 (Excel4) ExcelVersion = 6 'acSpreadsheetTypeExcel4 (Microsoft Excel 4.0 format) Case 39 'xlExcel5 (Excel5) 'xlExcel7 (Excel7) ExcelVersion = 5 'acSpreadsheetTypeExcel5 (Microsoft Excel 5.0 format) 'acSpreadsheetTypeExcel7 (Microsoft Excel 95 format) Case 46 'xlXMLSpreadsheet (XML Spreadsheet) ExcelVersion = 10 'acSpreadsheetTypeExcel12Xml (Microsoft Excel 2010 XML format) Case 50, 51 'xlExcel12 (Excel12) 'xlWorkbookDefault (Workbook Default) ExcelVersion = 9 'acSpreadsheetTypeExcel12 (Microsoft Excel 2010 format) Case 56 'xlExcel8 (Excel8) ExcelVersion = 8 'acSpreadsheetTypeExcel8 (Microsoft Excel 97 format) 'acSpreadsheetTypeExcel9 (Microsoft Excel 2000 format) End Select End Function 

“strFile2Import”和“txtFindFile”是从“文件”对话框中获取的要导入的文件名和完整path。

我的原始程序没有ExcelVersion函数,我已经将acSpreadsheetType硬编码为“acSpreadsheetTypeExcel12XML”,当我将其更改为“acSpreadsheetTypeExcel9”时,它一次正常工作。

我错过了什么?

为了logging,我也尝试在执行导入之后对整个表单执行.recalc和.requery,但这也是不成功的。

任何帮助你们可以扔我的方式将不胜感激!

 "DELETE tbl_Work_Plan_Item_Import.*, * " & _ 

这有*两次。

改成

 "DELETE tbl_Work_Plan_Item_Import.* " & _