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

İçindekiler

Aşağıdaki prosedürlerle, kapalı bir çalışma kitabından bir kayıt kümesi almak ve verileri okumak/yazmak için DAO'yu kullanabilirsiniz.
Prosedürü şöyle çağırın:
GetWorksheetData "C:\Foldername\Filename.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 db As DAO.Database, rs As DAO.Recordset, f As Integer, r As Long Eğer TargetCell Hiçbir Şey Değilse Sub On Error Devam Et Sonraki Set db = OpenDatabase (strSourceFile, False, True, "Excel 8.0;HDR=Yes;") ' salt okunur 'Set db = OpenDatabase(strSourceFile, False, False, "Excel 8.0;HDR=Yes;") ' write 'Set db = OpenDatabase( "C:\Foldername\Filename.xls", False, True, _ "Excel 8.0;HDR=Yes;") ' salt okunur 'Set db = OpenDatabase("C:\Foldername\Filename.xls", False, False, _ "Excel 8.0;HDR=Yes;") ' Yazma Hatasında GoTo 0 If db Hiçbir Şey Değilse MsgBox "Dosya bulunamıyor!", vbExclamation, ThisWorkbook.Name Exit Sub End If ' ' çalışma sayfası adlarını listele ' f için = 0 db.TableDefs.Count'a - 1 ' Debug.Print db.TableDefs(f).Name ' Sonraki f ' bir kayıt kümesi aç Hatada Devam Et Sonraki Set rs = db.OpenRecordset(strSQL) ' Set rs = db.OpenRecordset( "SELECT * FROM [SheetName$]") ' Set rs = db.OpenRecordset("SELECT * FROM [SheetName$]'dan" & _ "WHERE [Alan Adı] 'A*' GİBİ") ' Set rs = db.OpenRecordset("SELECT * FROM [SheetName$] " & _ "WHERE [Alan Adı] GİBİ 'A*' SİPARİŞİ [Alan Adı]" ) Hatada GoTo 0 Eğer rs Hiçbir Şey Değilse MsgBox "Dosyayı açamıyor!", vbExclamation, ThisWorkbook.Name db.Close Set db = Hiçbir Şeyden Çık Alt Uç Eğer RS2WS rs, TargetCell rs.Close Set rs = Hiçbir Şey db. Close Set db = Nothing End Sub Sub RS2WS(rs As DAO.Recordset, TargetCell As Range) Dim f As Integer, r As Long, c As Uzun rs Hiçbir Şey Değilse Sub'dan Çıkın HedefHücre Hiçbir Şey Değilse Sub'dan Çıkın O zaman Uygulama ile Sub'dan çıkın. = xlCalculationManual .ScreenUpdating = False .StatusBar = "Kayıt kümesinden veri yazılıyor… " TargetCell.Cells(1, 1) ile Bitiyor r = .Row c = .Column End With TargetCell.Parent .Range(.Cells(r, c) ), .Cells(.Rows.Count, c + rs.Fields.Count - 1)).Temizle 'mevcut içeriği temizle' sütun başlıklarını yaz For f = 0 To rs.Fields.Count - 1 Hatada Devam Et Sonraki .Cells( r, c + f).Formül = rs.Fields(f).Name On Error GoTo 0 Sonraki f ' write rec ords Hatada Devam Sonraki rs.MoveFirst Hatada GoTo 0 Yap Değilken rs.EOF r = r + 1 For f = 0 To rs.Fields.Count - 1 Hatada Devam Et Sonraki .Cells(r, c + f).Formula = rs.Fields(f).Value On Error GoTo 0 Sonraki f rs.MoveNext Loop .Rows(TargetCell.Cells(1, 1).Row).Font.Bold = True .Columns("A:IV").AutoFit Uygulama İle Bitir .StatusBar = False .Calculation = xlCalculationAutomatic .ScreenUpdating = True End with End Sub

Makro örnekleri, VBA projenizin DAO nesne kitaplığına bir başvuru eklediğini varsayar.
Bunu, Araçlar, Başvurular menüsünü seçip Microsoft DAO x.xx Nesne Kitaplığı'nı seçerek VBE içinden yapabilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave