Dear All!
Đã có rất nhiều bạn hỏi về việc xuất dữ liệu từ Access ra Excel. Tôi cũng đã nhiều lần muốn nói về chuyện này nhưng ngặt nỗi thời gian không cho phép. Nay tranh thủ hướng dẫn các bạn dùng DAO để chuyển dữ liệu. Các bạn cũng có thể dùng ADODB nhưng sẽ phức tạp hơn và sẽ nói ở một chuyên đề khác.
Để đơn giản và dễ hình dung, tôi sử dụng một database Access có tên là "Vi du chuyen du lieu tu Ac ra Ex bang DAO". Trong datbase này chỉ có một table duy nhất là tblKhach để ghi toàn bộ danh sách khách hàng có trong CSDL và một form frmKhach để cập nhật DSKH. Tôi không bàn sâu về cách thiết kế table và form vì đã có chuyên đề hướng dẫn riêng. Giả sủ ở đây CSDL đã có dữ liệu sẵn. Bây giờ làm sao đưa được dữ liệu từ table tblKhach ra Excel. Tôi dùng bộ Office 2003. Lưu ý cả file Access và Excel phải để chung cùng một thư mục
Các bạn thiết kế một file Excel "Danh sach khach hang.xls" như trong file đính kèm. Trong file Access, các bạn xem kỹ phần code ở nút bấm "In Danh Sach". Để làm được việc này, trong cửa sổ modul, các bạn chọn Tools/References... và chọn cho đủ hai thành phần sau :
1/ Microsoft DAO 3.6 Object Libary(hoặc cao hơn)
2/ Microsoft Excel 11.0 Object Libary(hoặc cao hơn)
Toàn bộ phần code của nút "In Danh Sach" như sau
Các bạn download file bên dưới về nghiên cứu. Có gì thắc mắc hoặc chưa hiểu liên hệ với tôi qua hộp thư bachdanggiang_2006@yahoo.com
Thân mến
P/S : Các bạn vào CWindows\System32 tìm xem có file DAO36.dll không, nếu không có thì tìm trên google mà chép vào
Như vậy sẽ không bị lổi
Đã có rất nhiều bạn hỏi về việc xuất dữ liệu từ Access ra Excel. Tôi cũng đã nhiều lần muốn nói về chuyện này nhưng ngặt nỗi thời gian không cho phép. Nay tranh thủ hướng dẫn các bạn dùng DAO để chuyển dữ liệu. Các bạn cũng có thể dùng ADODB nhưng sẽ phức tạp hơn và sẽ nói ở một chuyên đề khác.
Để đơn giản và dễ hình dung, tôi sử dụng một database Access có tên là "Vi du chuyen du lieu tu Ac ra Ex bang DAO". Trong datbase này chỉ có một table duy nhất là tblKhach để ghi toàn bộ danh sách khách hàng có trong CSDL và một form frmKhach để cập nhật DSKH. Tôi không bàn sâu về cách thiết kế table và form vì đã có chuyên đề hướng dẫn riêng. Giả sủ ở đây CSDL đã có dữ liệu sẵn. Bây giờ làm sao đưa được dữ liệu từ table tblKhach ra Excel. Tôi dùng bộ Office 2003. Lưu ý cả file Access và Excel phải để chung cùng một thư mục
Các bạn thiết kế một file Excel "Danh sach khach hang.xls" như trong file đính kèm. Trong file Access, các bạn xem kỹ phần code ở nút bấm "In Danh Sach". Để làm được việc này, trong cửa sổ modul, các bạn chọn Tools/References... và chọn cho đủ hai thành phần sau :
1/ Microsoft DAO 3.6 Object Libary(hoặc cao hơn)
2/ Microsoft Excel 11.0 Object Libary(hoặc cao hơn)
Toàn bộ phần code của nút "In Danh Sach" như sau
PHP:
Private Sub In_Click()
'Dinh nghia cac bien
Dim Khach As Recordset
Set Khach = CurrentDb.OpenRecordset("tblKhach", dbOpenTable)
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
Dim TenFile
Dim k As Integer
'Xac dinh vi tri cac bien
TenFile = CurrentProject.Path & "\Danh sach khach hang.xls"
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(TenFile)
Set Ws = Wb.Worksheets("Danh sach")
k = Ws.Range("A65000").End(xlUp).Row
'Loc va chuyen du lieu ra Ex
If Khach.RecordCount = 0 Then MsgBox "Khong co du lieu de in", , "Xin loi": Exit Sub
Khach.MoveFirst
Do Until Khach.EOF
n = Ws.Range("A65000").End(xlUp).Row
If Ws.Range("A" & n) = "STT" Then Ws.Range("A" & n + 1) = 1 Else Ws.Range("A" & n + 1) = Ws.Range("A" & n) + 1
Ws.Range("B" & n + 1) = Khach.Fields(0)
Ws.Range("C" & n + 1) = Khach.Fields(1)
Ws.Range("D" & n + 1) = Khach.Fields(2)
Khach.MoveNext
Loop
'Dinh dang File Ex
n = Ws.Range("A65000").End(xlUp).Row
Ws.Range("A" & k + 1 & ":B" & n).HorizontalAlignment = xlCenter
With Ws.Range("A" & k + 1 & ":D" & n)
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
If n > k + 1 Then .Borders(xlInsideHorizontal).LineStyle = xlDot
End With
'Xoa bien, giai phong bo nho va cho Ex hien thi
Khach.Close
Ex.Visible = True
Set Ex = Nothing
End Sub
Các bạn download file bên dưới về nghiên cứu. Có gì thắc mắc hoặc chưa hiểu liên hệ với tôi qua hộp thư bachdanggiang_2006@yahoo.com
Thân mến
P/S : Các bạn vào CWindows\System32 tìm xem có file DAO36.dll không, nếu không có thì tìm trên google mà chép vào
Như vậy sẽ không bị lổi
Đính kèm
Sửa lần cuối: