【问题标题】:Catastrophic Failure EXCEL VBA - error '-2147418113 (8000ffff)'灾难性故障 EXCEL VBA - 错误“-2147418113 (8000ffff)”
【发布时间】:2020-02-18 05:11:24
【问题描述】:

我正在努力寻找相关信息

'运行时错误'-2147418113 (8000ffff)' - 灾难性故障'

我正在经历。

Sub GenerateAIA_Click()
Dim SQL_query, SQL_syntax, DB_path, setting_conn As String
Dim conn As New ADODB.Connection
Dim query_rslt As New ADODB.Recordset

Dim mth, mth_yr As Variant
Dim dt As Date
Dim i, bol As Integer
Dim temp1, temp2 As Variant

dt = Sheets("Main").Range("C4")
mth_yr = MonthName(Month(Sheets("Main").Range("I12")), False) & " " & Year(Sheets("Main").Range("I12"))

ThisWorkbook.Sheets("AIA").Select

DB_path = ThisWorkbook.FullName 'Refering the same workbook as Data Source
setting_conn = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DB_path & ";HDR=Yes';"
conn.Open setting_conn
SQL_syntax = "SELECT * FROM [Setup$]"   'Your SQL Statement (Table Name= Sheet Name=[Sheet1$])
query_rslt.Open SQL_syntax, conn

我也注意到这个错误显示在一行

conn.Open setting_conn

我使用 excel 2016 以及我的文件格式 .xlsm
有人知道为什么会这样吗?

【问题讨论】:

    标签: excel vba connection-string


    【解决方案1】:

    您的连接字符串似乎有问题。 这是我如何让它工作的:

    (首先确保添加对 Microsoft Active-X 数据对象库的引用)

    Sub test()
      Dim conn As New ADODB.Connection
      Dim rs As New ADODB.Recordset
    
      conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\PC\test.xlsm;Extended Properties=""Excel 12.0 Macro;HDR=NO"";"
      conn.Open
    
      rs.Open "SELECT * FROM [Sheet1$]", conn
    
      If Not rs.EOF Then
        MsgBox rs(0) ' display the value of the first field in the first row
      Else
        MsgBox "No records found."
      End If
    
      rs.Close
      conn.Close
    
    End Sub
    

    以我为例,将文件名更改为您的 XLSM 文件,将工作表名称更改为工作表名称(在其末尾添加 $

    如果您的工作表现在有标题名称,请使用HDR=Yes,如果没有,请使用HDR=No

    【讨论】:

    • 在我添加你的代码之后,这意味着我添加了“子测试”,我得到了错误运行时错误'3706':应用程序定义或对象定义的错误,但在我看来,我可能没有参考了 microsoft active-x 数据对象库。请向我确认,如果这是一个错误,我没有在 excel 上添加插件。
    • 它不是“加载项” - 它随 Office 提供。在 VBA 编辑器中,转到工具...参考...有您的参考列表。您必须在要包含的内容旁边打勾。
    • 但在我添加 microsoft active-x 数据对象库后,收到错误消息“名称与现有模块、项目或对象库冲突。然后我将引用从 microsoft activeX 数据对象 2.8 库更改为 microsoft activeX 数据ojects 6.1 库。但仍然出现灾难性故障错误 - 错误“-2147418113 (8000ffff)”
    • 我不认为使用连接(这个宏到 SQL),因为这个宏只是将值表转换为另一个表。但是如果我尝试删除连接代码会产生另一个问题,运行时错误“3704”应用程序定义或对象定义错误
    • 它对我来说很好用,所以您一定没有将文件名或工作表名称更改为正确的东西。在全新的工作簿中单独尝试,而不是将其添加到您当前使用的工作簿中,以确保您可以先使其正常工作。
    【解决方案2】:

    或者您可以更改显示器的显示分辨率

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 2010-12-04
      • 2020-03-18
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多