2015-05-07 142 views
1

我閱讀了許多關於此主題的文章,但無法找到解決我的問題的方法。我需要做的是使用SQL在活動工作簿中從Sheet1中的表中獲取值。當我運行下面的代碼時,我得到「無法找到可安裝的ISAM」錯誤消息。我的連接字符串似乎有問題。找不到可安裝的ISAM vba

我正在使用Excel 2010.爲了解決我的問題,我激活了「Microsoft ActiveX Data Objects 6.1 Library」(這是最新版本)。

我是宏中的首發者,這就是爲什麼我可能會錯過一個簡單的觀點。如果是這樣,我很抱歉耗費你的時間。

感謝

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 

末次

回答

0

連接字符串格式不正確。 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應該是唯一的,如果你有頭。

相關問題