我有一个模块将Excel文件导入MS Access数据库表。 我明白了:MS Access数据库引擎找不到对象'REPORTCONFIG'。 表REPORTCONFIG确实存在并且由代码“拾取”,因为在我导入excel之前,我首先将表清空(其工作正常)。 我确保excel中的选项卡与Table的名称相同。 (REPORTCONFIG)
这是我的模块:
Dim MyExcelFileDialogBox As New OpenFileDialog()
If MyExcelFileDialogBox.ShowDialog = DialogResult.OK Then
MyExcelFullFileName = MyExcelFileDialogBox.FileName
MyExcelFile = Dir(MyExcelFileDialogBox.FileName)
MyExcelFilePath = Path.GetDirectoryName(MyExcelFileDialogBox.FileName)
ModuleConnection.AccessConnect()
ModuleTables.DeleteTableContent(MyTableName)
Dim MyExcelInsertSQL As String = "INSERT INTO [" & MyTableName & "] SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & MyExcelFullFileName & "].[" & MyTableName & "];"
Dim MyCommand As OleDbCommand = New OleDbCommand(MyExcelInsertSQL, MyAccessConnection)
Try
MyCommand.ExecuteNonQuery()
MyCommand.Dispose()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
MyAccessConnection.Close()
End If
感谢任何帮助。
答案 0 :(得分:1)
使用工作表作为查询的数据源时,请在工作表名称后面添加一个美元符号($
),以便找到它。
使用这个简单的SELECT
查询,数据库引擎会抱怨它无法找到REPORTCONFIG
:
SELECT *
FROM [Excel 12.0;DATABASE=C:\share\Access\MyWorkBook.xlsx;HDR=YES].[REPORTCONFIG];
但是,在REPORTCONFIG$
子句中使用FROM
时,以下查询会返回没有错误的数据。
SELECT *
FROM [Excel 12.0;DATABASE=C:\share\Access\MyWorkBook.xlsx;HDR=YES].[REPORTCONFIG$];