VB.Net:MS Access数据库引擎找不到该对象

时间:2013-01-07 16:45:26

标签: vb.net excel-2010 ms-access-2010

我有一个模块将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 

感谢任何帮助。

1 个答案:

答案 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$];