Dış kaynaklardan veriyi çalışma sayfasına almanın birçok yolu vardır
Ayrıca internetten, metin dosyalarından veya diğer Excel veya
Bu yüzden bir veritabanı bağlantısına ihtiyacımız var (değişken varConn aşağıdaki makroda) ve SQL sorgusu (değişken varSQL ) rapor için veritabanından veri alımını otomatikleştirmek. Aşağıdaki örnekte var SQL sorgusu MS Access'deki küçük bir veritabanından veri alan .
Tıklamak veritabanını yükle
MS Access dosyası şu şekilde görünecektir:
Çalıştıracağımız makromuzu yazalım SQL sorgusu .
Menüyü aç Hizmet - Makro - Düzenleyici Visual Basic , yeni modülü takın (Menü Insert - Module ) ve makro metnini buraya kopyalayın:
Sub SQLQuery_1() 'moonexcel.com.ua Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
Kaydet'i tıklayın ve Excel'ye dönün. Menüden seçim yapın Görünüm - Makrolar (Alt+F8) makromuzun adı " SQLQuery_1 ". Bir iletişim kutusu görünecektir, ona basın Veri tabanı... , Erişim dosyamızı arayın ve tıklayın
Artık makro sorgumuzun sütunları çektiğini görebiliriz.
Benzer şekilde normal bir Excel dosyasından veriyi sanki bir veritabanından alıyormuş gibi alabiliriz. Bunun için makromuzun kodunun biraz yeniden yazılması ve bağlantı sürücüsünün Access'ten Excel'ye değiştirilmesi gerekiyor.
Tabloyu dışa aktarıyoruz
Sub SQLQuery_2() 'moonexcel.com.ua Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
Excel dosyamızı seçebileceğimiz bir pencere açılacaktır (çağrılmalıdır)