VBA 连接数据库生成报表
时间: 2023-07-06 07:43:02 浏览: 162
是的,使用VBA连接数据库可以方便地生成报表。下面是一个简单的例子,假设我们使用Microsoft Access作为数据库:
1. 首先需要在VBA编辑器中添加对Microsoft ActiveX Data Objects(ADO)的引用。选择工具->引用,勾选Microsoft ActiveX Data Objects 6.1 Library(或其他版本)。
2. 接下来就可以编写VBA代码,连接Access数据库并读取数据:
```
Sub CreateReport()
'定义变量
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
Dim i As Integer
Dim j As Integer
'连接数据库
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\mydb.accdb"
conn.Open
'读取数据
sql = "SELECT * FROM mytable"
Set rs = New ADODB.Recordset
rs.Open sql, conn
'创建Excel工作簿
Dim wb As Workbook
Set wb = Workbooks.Add
'添加工作表
Dim ws As Worksheet
Set ws = wb.Sheets.Add
'填充数据
For i = 0 To rs.Fields.Count - 1
ws.Cells(1, i + 1).Value = rs.Fields(i).Name
Next i
i = 2
While Not rs.EOF
For j = 0 To rs.Fields.Count - 1
ws.Cells(i, j + 1).Value = rs.Fields(j).Value
Next j
i = i + 1
rs.MoveNext
Wend
'设置表格样式
ws.Range(ws.Cells(1, 1), ws.Cells(i - 1, rs.Fields.Count)).Borders.LineStyle = xlContinuous
'自动适应列宽
ws.Columns.AutoFit
'保存Excel文件
wb.SaveAs "D:\report.xlsx", FileFormat:=xlOpenXMLWorkbook
'关闭Excel文件
wb.Close
'关闭数据库连接
rs.Close
conn.Close
End Sub
```
这个例子中,我们首先使用ADO连接Access数据库,然后执行SELECT语句读取数据。接下来创建Excel工作簿和工作表,填充数据并设置表格样式。最后保存Excel文件并关闭连接。实际应用中,我们可以根据具体需求编写更复杂的VBA代码,连接不同的数据库和数据源,生成各种格式的报表。
阅读全文