Saat kita menggunakan pemrograman excel, seringkali kita perlu menggunakan database.
Lalu bagaimana cara terhubung ke database dan kemudian membaca data dari database?
VBA terhubung ke contoh database SQL SERVER:
Redupkan strConn As String, strSQL As String Dim conn As ADODB.Connection Dim ds As ADODB.Recordset Dim col As Integer 'String untuk terhubung ke database strConn = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=[ pengguna ];Kata Sandi=[kata sandi];Katalog Awal=[basis data];Sumber Data=[alamat IP basis data atau nama server basis data];Hubungkan Timeout=720; " 'Pernyataan kueri, jika pernyataan sql sangat panjang, Anda dapat menggunakan strSQL=strSQL+ untuk menghubungkan pernyataan yang dibagi menjadi beberapa paragraf. Jika pernyataan sangat pendek, Anda hanya dapat menulisnya dalam satu baris. strSQL = "pilih * dari Hy_KPI_Shop_Dept_WeekRpt " strSQL = strSQL+"di mana sdate='2014-01-01' diurutkan berdasarkan tanggal,shopid " Set conn = New ADODB.Connection Set ds = New ADODB.Recordset 'Buka koneksi database conn.Open strConn 'Kalimat ini dan Hubungkan pada string koneksi database Timeout=720 artinya jika pernyataan berjalan dalam waktu yang lama, kedua kalimat ini dapat memperpanjang waktu tunggu VBA. Tanpa kedua kalimat tersebut, VBA akan sering melaporkan waktu tunggu query. conn.CommandTimeout = 720 Dengan ds 'Dapatkan data sesuai dengan pernyataan kueri. Buka strSQL, samb' Secara otomatis mengontrol penambahan semua header kolom Untuk col = 0 Ke ds.Fields.Count - 1 'Harap perhatikan bahwa parameter di Offset( 0, kol) harus benar, maksudnya kalimat ini judulnya akan ditulis pada baris pertama, dimulai dari sel A1, jika tidak ingin menulis baris judulnya, anda bisa mengomentari kalimat berikut ini. Lembar Kerja("Laporan mingguan KPI untuk setiap kelas di toko").Range("A1").Offset(0, col).Value = ds.Fields(col).Name Next 'Tambahkan semua baris data, maksud kalimat ini yang hasil querynya akan ditulis pada baris pertama, dimulai dari sel A1, namun karena baris judul ditulis pada baris pertama, maka baris ini sebenarnya ditulis dari baris di bawah judul. Worksheets("sheet1").Range("A1").Offset(1, 0).CopyFromRecordset ds Diakhiri Dengan 'Tutup koneksi database dan hapus sumber daya Set ds = Tidak ada samb.Tutup Set samb = Tidak ada