找不到可安装的 ISAM Excel 2010

Posted

技术标签:

【中文标题】找不到可安装的 ISAM Excel 2010【英文标题】:Could Not Find Installable ISAM Excel 2010 【发布时间】:2014-07-20 19:44:43 【问题描述】:

我在 Excel 2010 中有这个子程序,它应该从 Access 2010 的表中复制。当我尝试运行代码时,它给了我一个“找不到可安装的 ISAM”。当我调试时,它会突出显示 objDB.Execute。

Private Sub btnGetData_Click()

Unload ParameterMenu
formWait.Show

'Save workbook
ActiveWorkbook.Save

Dim strExcelFile As String
Dim strWorksheet As String
Dim strDB As String
Dim strTable As String
Dim objDB As Database

strExcelFile = "X:\Form.xlsm"
strWorksheet = "RawDates"
strDB = "X:\Tables.accdb"
strTable = "Dates"

Set objDB = OpenDatabase(strDB)

objDB.Execute _ 'Error occurs here.
  "SELECT * INTO [Excel 14.0;DATABASE=" & strExcelFile & _
   "].[" & strWorksheet & "] FROM " & "[" & strTable & "]"

objDB.Close
Set objDB = Nothing

Unload formWait
FinishDialog.Show

End Sub

我对 VBA 的经验并不多,因此我们将不胜感激。

【问题讨论】:

【参考方案1】:

正确的格式是“Excel 12.0 Macro”而不是“Excel 14.0”:

objDB.Execute _ 'Error occurs here.
  "SELECT * INTO [Excel 12.0 Macro;DATABASE=" & strExcelFile & _
   "].[" & strWorksheet & "] FROM " & "[" & strTable & "]"

编辑:

也许改用 ADO:

Private Sub btnGetData_Click()

Unload ParameterMenu
formWait.Show

'Save workbook
ActiveWorkbook.Save

Dim strExcelFile As String
Dim strWorksheet As String
Dim strDB As String
Dim strTable As String
Dim objDB As Object
Dim rs As Object

strExcelFile = "X:\Form.xlsm"
strWorksheet = "RawDates"
strDB = "X:\Tables.accdb"
strTable = "Dates"

Set objDB = CreateObject("ADODB.Connection")
With objDB
    .Provider = "Microsoft.ACE.OLEDB.12.0"
      .ConnectionString = "Data Source=" & strDB & ";"
      .Open
   End With

Set rs = CreateObject("ADODB.Recordset")

rs.Open "SELECT * FROM " & "[" & strTable & "]", objDB, 3, 1, 1

If Not rs.EOF Then _
ThisWorkbook.Worksheets(strWorksheet).Cells(Rows.Count, "A").End(xlUp).Offset(1).CopyFromRecordset rs

rs.Close
objDB.Close
Set objDB = Nothing

Unload formWait
FinishDialog.Show

End Sub

【讨论】:

它现在给我一个错误 3011,说它找不到 RawDates。我已经仔细检查了所有名称,它们都是正确的,但是它一直给我这个错误。 如果是现有工作表,则需要使用RawDates$作为名称。 您是要追加到现有工作表还是创建新工作表? 追加。该表已经存在,我想向其中添加数据。但即使我删除表,它也会给我 3011 错误。 您正在写入代码所在的同一个工作簿吗?对于追加查询,您需要 INSERT INTO 而不是 SELECT INTO - 类似于:"INSERT INTO [Excel 12.0 Macro;DATABASE=" & strExcelFile & _ "].[" & strWorksheet & "] SELECT * FROM " & "[" & strTable & "]"

以上是关于找不到可安装的 ISAM Excel 2010的主要内容,如果未能解决你的问题,请参考以下文章

找不到可安装的 ISAM。上传 Excel 文件 (.xls) 格式时

OleDb如何读取Excel?(Error:找不到可安装的ISAM)

找不到可安装的 ISAM

找不到可安装的isam

C#导入execl 找不到可安装的 ISAM

导入EXCEL表时,提示"找不到可安装的ISAM"怎么办?