我读了许多关于这个问题的文章,但找不到解决问题的办法。我需要做的是使用SQL从活动工作簿中的Sheet1中的表中获取值。当我运行下面的代码时,我得到了“无法找到可安装的ISAM”错误消息。我的连接字符串似乎有问题。
我正在使用Excel 2010。为了解决我的问题,我激活了“MicrosoftWebDataObjects6.1Library”(这是最新版本)。
我是宏的始作俑者,这就是为什么我可能遗漏了一个简单的点。如果是这样的话,我很抱歉浪费了你的时间。
谢谢
卡格里
我的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结束子对象
发布于 2015-05-07 07:24:36
连接字符串的格式不正确。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才应该是“是”。
发布于 2022-03-18 11:37:03
在尝试通过Excel连接到MySQL数据库时,通过MySQL 8.0ODBConnector进行连接时,出现了这个错误。在同一个应用程序中,我还使用JET引擎(或ACE -取决于版本)通过我的Excel表发送SQL。因此,我要么连接到Jet/ACE引擎,要么根据应用程序的需要连接到ODBC驱动程序。在我的例子中,结果是连接对象是在这样的调用之间设置的,因此我最终尝试使用以前设置的Jet/ACE连接对象,并尝试与ODBC驱动程序进行新的连接尝试。因此,解决方案非常简单,在本例中:在启动新连接之前,每次都将connection对象设置为空,不管是:
Set ConnDB = Nothing因此,以后我每次在这里定义一个新的连接对象:
If (ConnDB Is Nothing) Then
Set ConnDB = New ADODB.Connection
End Ifhttps://stackoverflow.com/questions/30093666
复制相似问题