Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 16
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel

    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


    Mã nguồn PHP:
    [COLOR=#000000]
    [/COLOR][COLOR=#007700]Private [/COLOR][COLOR=#0000BB]Sub In_Click[/COLOR][COLOR=#007700]() [/COLOR][COLOR=#DD0000]'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 '[/COLOR][COLOR=#0000BB]Xac dinh vi tri cac bien TenFile [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]CurrentProject[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Path [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#DD0000]"\Danh sach khach hang.xls" [/COLOR][COLOR=#0000BB]Set Ex [/COLOR][COLOR=#007700]= New [/COLOR][COLOR=#0000BB]Excel[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Application Set Wb [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Ex[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Workbooks[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Open[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]TenFile[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]Set Ws [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Wb[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Worksheets[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Danh sach"[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]k [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Ws[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A65000"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]End[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlUp[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Row [/COLOR][COLOR=#DD0000]'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 '[/COLOR][COLOR=#0000BB]Dinh dang File Ex n [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Ws[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A65000"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]End[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlUp[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Row Ws[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]k [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#DD0000]":B" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]n[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]HorizontalAlignment [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]xlCenter With Ws[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"A" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]k [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1 [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#DD0000]":D" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]n[/COLOR][COLOR=#007700]) .[/COLOR][COLOR=#0000BB]Borders[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlEdgeLeft[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]LineStyle [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]xlContinuous [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Borders[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlEdgeRight[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]LineStyle [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]xlContinuous [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Borders[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlEdgeTop[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]LineStyle [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]xlContinuous [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Borders[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlEdgeBottom[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]LineStyle [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]xlContinuous [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Borders[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlInsideVertical[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]LineStyle [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]xlContinuous [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]n [/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000BB]k [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1 Then [/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Borders[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlInsideHorizontal[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]LineStyle [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]xlDot End With [/COLOR][COLOR=#DD0000]'Xoa bien, giai phong bo nho va cho Ex hien thi Khach.Close Ex.Visible = True Set Ex = Nothing End Sub[/COLOR
    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 C:-/Windows\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

  2. #2
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel

    KO hiểu Mod viết gì ở trên hết, liệu có được liên lạc ko vì rằng thắc mắc toàn tập :blush:

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel

    Còn cách khác tối ưu hơn là khỏi dùng vòng lặp. Chạy nhanh và gọn hơn.

  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel




    Trích dẫn Gửi bởi domfootwear
    Còn cách khác tối ưu hơn là khỏi dùng vòng lặp. Chạy nhanh và gọn hơn.
    Bạn có cách nào hay thì chia xẻ cho mọi người học hỏi.
    Cám ơn bạn.

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel




    Trích dẫn Gửi bởi domfootwear
    Còn cách khác tối ưu hơn là khỏi dùng vòng lặp. Chạy nhanh và gọn hơn.
    Khi mọi người mới tiếp cận với VBA thì nên hướng dẫn họ từ dễ đến khó
    Thân

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel

    Học access siu đẳng rùi mà đọc vẫn thấy ngu ngu!!!!! :thodai:

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    98
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel




    Trích dẫn Gửi bởi xuanthanh
    Khi mọi người mới tiếp cận với VBA thì nên hướng dẫn họ từ dễ đến khó
    Thân
    Code của bạn chạy bị lỗi ở dòng


    Mã:
     k = Ws.Range("A65000").End(xlUp).Row

  8. #8
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel




    Trích dẫn Gửi bởi domfootwear
    Code của bạn chạy bị lỗi ở dòng


    Mã:
     k = Ws.Range("A65000").End(xlUp).Row
    Không lỗi đâu. Bạn kiểm tra lại giùm
    Thân

    P/S : Download thử file của minh về, giải nén vào một thư mục bất kỳ rồi chạy code(Trong file đã có sẵn dữ liệu)

  9. #9
    Ngày tham gia
    Jan 2016
    Bài viết
    3
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel




    Trích dẫn Gửi bởi xuanthanh
    Không lỗi đâu. Bạn kiểm tra lại giùm
    Thân

    P/S : Download thử file của minh về, giải nén vào một thư mục bất kỳ rồi chạy code(Trong file đã có sẵn dữ liệu)
    Chắc chắn mình đã làm như bạn hướng dẫn, lổi ngay dòng ấy.

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chuyên đề : Sử dụng DAO để chuyển dữ liệu từ Access ra Excel




    Trích dẫn Gửi bởi domfootwear
    Chắc chắn mình đã làm như bạn hướng dẫn, lổi ngay dòng ấy.
    Bạn kiểm tra lại theo dòng chữ màu đỏ ở #1 xem sao nhé
    Thân

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •