Harici Bir Veritabanını Okumak ve Yazmak için Excel Nasıl Kullanılır

Şimdi paylaş:

Excel neredeyse her şeyi yapabilir; her şeyi yapması gerekip gerekmediği başka bir konudur. Elektronik tablo, verileri manipüle etmede çok güçlü olsa da, normalleştirilmiş verileri depolamada çok iyi değildir. Excel'i aşağıdaki gibi ilişkisel bir veritabanında kullanmak SQL Server uygulamanın gücünü artırır.

Öncelikle MS Access'e veya daha istikrarlı ve ücretsiz olanına ihtiyacınız olacak. SQL Server İfade etmek. Okuyucunun Excel Geliştirici şeridinin görüntülendiği ve VBA Düzenleyicisi ile Yapılandırılmış Sorgu Dili'ne (SQL) aşina olduğu varsayılmaktadır. Bu makale kullanır SQL Server bağlantı dizeleri. MS-Access için Google'a bakın.

Excel'in bilgi almak için kendi yerleşik yordamları olsa da SQL Server örneğin bir pivot tabloya dönüştürürseniz, örneğimiz veri seçiminde daha fazla esneklik sağlayacaktır.

Bağlantı dizisi

Özel bir veritabanı kullanacağım; kendi sürücü bilgilerinizi ConnectDatabase alt rutininde benimkinin yerine ekleyin. daha sonra kullanırız bağlantıDB veritabanımıza bir iletişim kanalı olarak - benim durumumda saklı bir prosedürden sonuçları döndürmek için. “Select * from…” gibi daha standart SQL deyimleri kullanabilirsiniz.

İş Sırası

İlk olarak, açılan kutu seçimlerini şu adresten yükleyeceğiz: SQL Server Çalışma kitabı açıldığında, bir Auto_open makrosu kullanılarak "ComboData" sayfasına aktarılır. Sunucu bulutta veya yerel olsun, veritabanına iş istasyonundan erişilebildiği sürece Excel'in başlatılmasında fark edilebilir bir gecikme olmayacaktır.

Ardından, filtrelenmiş verileri veritabanından çıkaracağız ve F'den K'ye kadar olan sütunlar olan Excel'e bırakacağız.

Arayüz

Mine, veritabanından bilgileri filtrelemek için açılan kutulara sahiptir. bu Rol birleşik giriş kutusu, sağdaki tabloyu doldurmak için bir aramayı tetikler.Rol Açılan Kutusu, Tabloyu Doldurmak İçin Bir Aramayı Tetikliyor

"Sayfa1"i "Ana" olarak yeniden adlandırın. En az bir birleşik giriş kutusu ekleyin.

Kod

Public connDB As New ADODB.Connection
Public rstNew As New ADODB.Recordset
Public rs As New ADODB.Recordset
Public strSQL As String
Public nID As Integer

Sub auto_Open()
    Call PopulateComboData     'kicks off the first process  on Open
End Sub

Sub PopulateComboData()
    Sheets("ComboData").Range("A3:C100").ClearContents
    Call ConnectDatabase      'use the ConnectDatabase routine
    strSQL = "Select DeptID, Department, Phase from tblDept Order by Department"
    Set rs = connDB.Execute(strSQL)
    ActiveSheet.Range("A3").CopyFromRecordset rs      'copies the recordset in bulk
End Sub

Sub ReadData()
    intRole = Sheets("main").Range("D7")
    Sheets("Main").Range("F4:L100").ClearContents
    Call ConnectDatabase
    strSQL = "EXEC DBTest " & intRole    'calls a stored proc with parameter
    Set rs = connDB.Execute(strSQL)
    ActiveSheet.Range("F4").CopyFromRecordset rs      'copies the recordset in bulk
End Sub

Sub ConnectDatabase()
    On Error GoTo ErrConnect
    If connDB.State = 1 Then connDB.Close     'closes connection if already open
    strServer = "197.200.28.164" 
    strDBase = "Qcrew_sql"
    strUser = "joesoap_sql"
    strPWD = "frU6ra!@"
    If strPWD > "" Then 
        strConnectionstring = "DRIVER={SQL Server};Server=" & strServer & _
        ";Database=" & strDBase & ";Uid=" & strUser & ";Pwd=" & strPWD & _
        ";Connection Timeout=30;"
    Else        'Use windows authentication
        strConnectionstring = "DRIVER={SQL Server};SERVER=" & strServer & _
        ";Trusted_Connection=yes;DATABASE=" & strDBase
    End If
    connDB.Open strConnectionstring
Exit Sub
ErrConnect:
    MsgBox Err.Description
End Sub

Birleşik giriş kutusu denetimini "ComboData" sayfalarını okumak için biçimlendirin. Ardından, ReadData alt prosedürünü ona atamak için birleşik giriş kutusuna sağ tıklayın. Açılan kutuda bir öğe seçildiğinde, anahtarını "Ana" sayfası, D7 hücresine yazın. VBA kodu bu anahtarı bir filtre olarak kullanacaktır (yukarıdaki intRole'e bakın).

DLL kütüphanesine yapılan referanslar

Kod penceresinde Araçlar > Referanslar seçeneğini kullanarak Microsoft ActiveX Veri Nesneleri kitaplığına referans verin. Bu, Excel'in kodda tanımlanan ADODB nesnelerini kullanmasını sağlayacaktır.Microsoft ActiveX Veri Nesneleri Kitaplığı'na bakın.

Yukarıdaki ReadData alt yordamı, aşağıda gösterilen ve yalnızca Excel'de elde edilmesi zor olan bir ilişkisel veri yapısı kullanır.ReadData Alt Rutini, İlişkisel Bir Veri Yapısı Kullanır

Daha fazla veri değişikliği, uygun SQL Update deyiminin ardından veritabanına bir geri yazmayı tetikleyebilir. connDB.execute(strSQL).

Son olarak, kodunuzu görüntülenmeye veya değiştirilmeye karşı koruyun:  Araçlar>Özellikler>Koruma.

Excel sorunlarını ele alın:

Zaman zaman, özellikle karmaşık programları barındırdığında, Excel çökebilir ve düzgün bir şekilde yeniden yükleyemeyebilir. bir durumda hasarlı xlsx Dosyanızda herhangi bir sorun varsa, etkili bir kurtarma aracına sahip olmak çoğu problemi çözecektir.

Yazar Tanıtımı:

Felix Hooker, veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. onarım rar hata ve sql kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com

Şimdi paylaş:

Yoruma kapalı.