【问题标题】:Could Not Find Installable ISAM Excel 2010找不到可安装的 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 的经验并不多,因此我们将不胜感激。

【问题讨论】:

    标签: vba ms-access excel excel-2010


    【解决方案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 & "]"
    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2015-07-17
    相关资源
    最近更新 更多