Gönderen: sinantutuman | Şubat 28, 2009

Access Üzerinden Excel’e Veri Transferi VBA

Access; temel bir veritabanı uygulaması gibi görünsede, günlük iş hayatında Excel ile entegre kullanıldığı zaman çok verimli bir programa dönüşür. Excel, günlük işlerden çıkıp biraz olsun komplike uygulamalarla kullanılmaya çalışıldığında, şişer ve hatalar verir. yani belirli bir limiti bulunur. ama Access 2 gb kadar veriyi excel’den daha iyi yönetebilir. bu müşteri bilgilerini metin halinde depolamak için gayet yeterli bir miktardır.

birinci kullanıcıyı belli alanlarda kısıtlamak için menü gayet gelişmiştir. aradığınız kriterlede veriler raporlanabilir yahut excel’e transfer edilip orada incelenebilir. bunun için bazı makrolar yeterli olabilir yahut menüler aracılığıylada sonuca ulaşabiliriz.

örneğin “OutPutTo” makrosu seçtiğiniz sorguları yada tabloları istediğiniz formatlarda öğelere dönüştürebilir. örneğin bir Excel, Notepad, HTML uygulaması bunlardan sadece bir kaçıdır.

bunun yanısıra istediğiniz tablo veya sorguları sağ tıklayarak “export” u tıklayabilir ve format belirleyerek gene yukarda saydığım uygulamalara dönüştürebilirisiniz.

bu saydığım işlemlerin yanısıra istediğiniz işlemleri VBA üzerinde yaparak daha kriterli ve derlenmiş bir şekilde de yapabilirsiniz. VBA sayesinde gönderdiğiniz verilerin formatınıda önceden belirtip Excel’de de tablo biçimlerini değiştirmeye gerek bırakacak angarya işlerle uğraşmanıza gerek kalmaz. bu şekilde Access database sisteminde tuttuğunuz verileri Excel gayet entegre bir şekilde kullanabilirsiniz.

Aşağıda yazacağım kod un içerisine combobox, textbox gibi form elemanlarının içinde barındırdığı kriterleri ekleyebilirsiniz. bununla ilgili örnekleri ileriki günlerde paylaşacağım.

ilk olarak Tools–>References bölümünden Microsoft Excel 11.0 library yada Microsoft Excel 12.0 library ekleyin. bu çok önemlidir unutursanız kesinlikle çalışmaz.

Public myExcel as Excel.Application

Sub accesstenExcel()


Dim conn As ADODB.Connection

Dim rst As ADODB.Recordset

Dim cmdCommand As New ADODB.Command

Dim excelKitabi As Excel.Workbook

Dim excelSayfasi As Excel.Worksheet

Dim BaslamaAraligi As Excel.Range

Dim sutun As Integer

Dim baslik As Variant

Set conn = CurrentProject.Connection

With cmdCommand

.ActiveConnection = conn

.CommandText = “SELECT * FROM Tablo adını buraya yazınız“

.CommandType = adCmdText

End With

Set conn = New ADODB.Connection

Set rst = New ADODB.Recordset

With rst

.Open cmdCommand

End With

Set myExcel = New Excel.Application

‘ MS EXCEL SAYFASI ACAR

Set excelKitabi = myExcel.Workbooks.Add

Set excelSayfasi = excelKitabi.ActiveSheet

myExcel.Visible = True

sutun = 1

‘ SUTUN BASLIKLARINI BELIRLER

With rst

For Each baslik In .Fields

With excelSayfasi

.Cells(1, sutun).Value = baslik.Name

.Cells(1, sutun).Interior.ColorIndex = 13

.Cells(1, sutun).Interior.Pattern = xlSolid

.Cells(1, sutun).Font.ColorIndex = 2

.Cells(1, sutun).Font.Bold = True

sutun = sutun + 1

End With

Next

End With

‘VERILERI KOPYALAMAYA BASLAR

Set BaslamaAraligi = excelSayfasi.Cells(2, 1)

BaslamaAraligi.CopyFromRecordset rst

‘SUTUNLARI FITLER

excelSayfasi.Columns(“A:AT”).EntireColumn.AutoFit

rst.Close

Set rst = Nothing

Set conn = Nothing

Set myExcel = Nothing

Exit Sub

End Sub

bu şekilde sadece yukarıda belirttiğim yere tablo yada sorgu adını girmeniz yeterli olaracaktır.


Kategoriler

Follow

Get every new post delivered to your Inbox.