Microsoft Excel'de VBA kullanarak kapalı bir çalışma kitabını veritabanı (ADO) olarak kullanma

Anonim

Aşağıdaki yordamlarla, kapalı bir çalışma kitabından bir kayıt kümesi almak ve verileri okumak/yazmak için ADO'yu kullanabilirsiniz.
Prosedürü şöyle çağırın:

GetWorksheetData "C:FoldernameFilename.xls", "SELECT * FROM [SheetName$];", ThisWorkbook.Worksheets(1).Range("A3")
SheetName'i veri almak istediğiniz çalışma sayfası adıyla değiştirin.

Sub GetWorksheetData(strSourceFile As String, strSQL As String, TargetCell As Range)
Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer, r As Long
TargetCell Hiçbir Şey Değilse, Sub'dan Çıkın
Set cn = Yeni ADODB.Connection
Hatada Devam Et Sonraki
cn.Open "SÜRÜCÜ={Microsoft Excel Sürücüsü (*.xls)};DriverId=790;ReadOnly=True;" & _
"DBQ=" & strSourceFile & ";"
' Sürücü Kimliği=790: Excel 97/2000
' Sürücü Kimliği=22: Excel 5/95
' Sürücü Kimliği=278: Excel 4
' Sürücü Kimliği=534: Excel 3
Hatada GoTo 0
Eğer cn Hiçbir Şey Değilse
MsgBox "Dosya bulunamadı!", vbExclamation, ThisWorkbook.Name
Alt Çıkış
Bitir

' bir kayıt seti aç
Set rs = Yeni ADODB.Recordset
Hatada Devam Et Sonraki
rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText
' rs.Open "SELECT * FROM [SheetName$]", _
cn, adOpenForwardOnly, adLockReadOnly, adCmdText
' rs."SEÇ * [SayfaAdı$]'DEN" açın, _
cn, adOpenStatic, adLockOptimistic, adCmdText
' rs.Open "SEÇ * [SayfaAdı$] NEREDEN [Alan Adı] 'A%' GİBİ", _
cn, adOpenStatic, adLockOptimistic, adCmdText
' rs.Open "SEÇ * [SayfaAdı$] YERİNDEN [Alan Adı] 'A%' GİBİ [Alan Adı] TARAFINDAN SİPARİŞ", _
cn, adOpenStatic, adLockOptimistic, adCmdText

' bir kayıt kümesi almanın isteğe bağlı yolları
' Set rs = cn.Execute("[A1:Z1000]") ' ilk çalışma sayfası
' Set rs = cn.Execute("[DefinedRangeName]") ' herhangi bir çalışma sayfası

Hatada GoTo 0
Eğer rs Hiçbir Şey Değilse
MsgBox "Dosya açılamıyor!", vbExclamation, ThisWorkbook.Name
cn.Kapat
cn = Hiçbir şey olarak ayarla
Alt Çıkış
Bitir

RS2WS rs, TargetCell
Excel 2000 veya sonrası için ' TargetCell.CopyFromRecordset rs ' isteğe bağlı yaklaşım

rs.State = adStateOpen ise
rs.Kapat
Bitir
rs = Hiçbir şey ayarla
cn.Kapat
cn = Hiçbir şey olarak ayarla
Alt Bitiş

Makro örneği, VBA projenizin ADO nesne kitaplığına bir başvuru eklediğini varsayar.
Bunu, Araçlar, Referanslar menüsünü seçip Microsoft'u seçerek VBE içinden yapabilirsiniz.
ActiveX Veri Nesneleri x.x Nesne Kitaplığı.