找不到可安装的ISAM VBA



我阅读了许多有关此主题的文章,但找不到任何解决方案。我需要做的是使用SQL中的活动工作簿中的Sheep1中的表获取值。当我在下面运行代码时,我会得到"找不到可安装的ISAM"错误消息。我的连接字符串中似乎有一个问题。

我正在使用Excel2010。为了解决我的问题,我激活了" Microsoft ActiveX数据对象6.1库"(这是最新版本)。

我是宏的首发,这就是为什么我可能会缺少一个简单的观点。如果是这样,我很抱歉花时间。

谢谢

cagri

我的VBA代码;

Sub GC_Button_Click()
Dim Giris_Zamani As Recordset
Dim Cikis_Zamani As Recordset
Dim StrGiris_Zamani As String
Dim StrCikis_Zamani As String
Dim Donem As Integer
Dim Gun As Integer
Dim Personel As String
Dim RowCount As Long
Dim CalismaSaati As Integer
Dim Conn As ADODB.Connection
Dim SQL_Giris As String
Dim SQL_Cikis As String
Dim RowNumber As Integer
Dim DayNumber As Integer
Dim strWorkbook As String
strWorkbook = Application.ActiveWorkbook.FullName
RowCount = Sheets(2).UsedRange.Rows.Count
Sheets(1).Select
Range("A2:A900000").Copy
Sheets(2).Select
Cells(8, 1).Select
ActiveSheet.Paste
Range("A8:A900000").RemoveDuplicates Columns:=Array(1)
Range("A8:A900000").Sort Key1:=Range("A8"), Order1:=xlAscending,    Header:=xlNo
Sheets(2).Select
Donem = Cells(2, 8)
Set Conn = New ADODB.Connection
With Conn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & strWorkbook & "; Extended Properties =  Excel 12.0 Macro; HDR=YES"
.Open
End With
For RowNumber = 8 To RowCount
For DayNumber = 1 To 31
Personel = Cells(RowNumber, 1)
Gun = DayNumber
SQL_Giris = "SELECT [ZAMAN] FROM [Sheet1] WHERE [Personel Adi Soyadi]= '" + Personel + "' AND [Giris / Cikis]='Giris' AND [DÖNEM]=" + CStr(Donem) + " AND [GÜN]=" + CStr(Gun) + ""
SQL_Cikis = "SELECT [ZAMAN] FROM [Sheet1] WHERE [Personel Adi Soyadi]= '" + Personel + "' AND [Giris / Cikis]='Cikis' AND [DÖNEM]=" + CStr(Donem) + " AND [GÜN]=" + CStr(Gun) + ""
Set Giris_Zamani = Conn.Execute(SQL_Giris)
Set Cikis_Zamani = Conn.Execute(SQL_Cikis)
StrGiris_Zamani = Giris_Zamani.Fields(0).Value
StrCikis_Zamani = Cikis_Zamani.Fields(0).Value
CalismaSaati = Hour(TimeValue(StrCikis_Zamani) - TimeValue(StrGiris_Zamani))
Cells(RowNumber, DayNumber + 1).Value = CalismaSaati
Next DayNumber
Next RowNumber

结束sub

您的连接字符串未正确格式。Extended Properties值应包含在引号="Excel 12.0 Macro; HDR=YES"中,因为两个设置都是扩展属性的一部分。完整的连接字符串应格式化:

"Data Source=<file path>; Extended Properties=""Excel 12.0 Macro; HDR=<YES/NO>"""

,您的代码应为:

"Data Source=" & strWorkbook & "; Extended Properties=""Excel 12.0 Macro; HDR=YES"""

*请注意,HDR只有在您有标题时才是YES。

我尝试通过MySQL 8.0 ODBC连接器连接到MySQL DB时弹出了此错误。在同一应用程序中,我还使用喷气发动机(或ACE - 取决于版本)将SQL发送到我的Excel桌上。因此,我根据应用所需的需要连接到喷气/ACE引擎或ODBC驱动程序。就我而言,事实证明是在此类呼叫之间设置了连接对象,因此我最终试图使用以前的设置连接对象为喷气机/ACE使用,并尝试了ODBC的新连接。司机。因此,在这种情况下,解决方案非常简单:在我启动新连接之前,每次都将连接对象设置为一无所有:

Set ConnDB = Nothing

,以后我每次都在这里定义一个新的连接对象:

If (ConnDB Is Nothing) Then
  Set ConnDB = New ADODB.Connection
End If

最新更新