• Tạo hàm để Export dữ liệu từ một table Access ra một file Excel
  • Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    Xuân Thanh > 10-06-12, 10:19 PM

    Đã có Import thì phải có Export
    Vẫn chọn Microsoft Excel 11.o Object libary
    Chép hàm ExAcEx vào một modul của file Access
    Mã PHP:
    Function ExAcEx(tblTabName As StringstrFile As StringshSheet As StringCll As String)
        Dim Ex As Excel.Application
        Dim fileEx 
    As Workbook
        Set fileEx 
    Ex.Workbooks.Open(strFile)
        Dim Ws As Worksheet
        Set Ws 
    fileEx.Worksheets(shSheet)
        Dim ijkAs Integer
        i 
    Ws.Range(Cll).Row
        n 
    Ws.Range(Cll).Column
        Dim Rs 
    As Recordset
        Set Rs 
    CurrentDb.OpenRecordset(tblTabNamedbOpenTable)
        j Rs.Fields.Count
        
    If Rs.RecordCount 0 Then
            Rs
    .MoveFirst
            
    Do Until Rs.EOF
                
    For 0 To j 1
                    Ws
    .Cells(ik) = Rs.Fields(k)
                Next
                i 
    1
            Loop
        End 
    If
        Set Ex NothingRs.Close
    End 
    Function 

    Khi cần goi hàm ExAcEx như sau
    Call ExAcEx ("tblDanhsachkhachhang","D:\Excel\Danh sach khach hang.xls","Danh sach","A2")

    Hàm chưa test
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    Xuân Thanh > 11-06-12, 09:47 AM

    Sau khi test thử, sửa lại hàm ExAcEx như sau :
    1/ Thêm New trước Excel.Application(mở Ex trước khi mở file)
    2/ Sau khi Export xong, lưu file Excel và đóng nó bằng dòng lệnh
    fileEx.Save
    fileEx.Close
    Toàn bộ hàm được sửa lại như sau :

    Mã PHP:
    Function ExAcEx(tblTabName As StringstrFile As StringshSheet As StringCll As String)
        
    Dim Ex As New Excel.Application
        Dim fileEx 
    As Workbook
        Set fileEx 
    Ex.Workbooks.Open(strFile)
        
    Dim Ws As Worksheet
        Set Ws 
    fileEx.Worksheets(shSheet)
        
    Dim ijkAs Long
        i 
    Ws.Range(Cll).Row
        n 
    Ws.Range(Cll).Column
        Dim Rs 
    As Recordset
        Set Rs 
    CurrentDb.OpenRecordset(tblTabNamedbOpenTable)
        
    Rs.Fields.Count
        
    If Rs.RecordCount 0 Then
            Rs
    .MoveFirst
            
    Do Until Rs.EOF
                
    For 0 To j 1
                    Ws
    .Cells(ik) = Rs.Fields(k)
                
    Next
                Rs
    .MoveNext
                i 
    1
            Loop
        End 
    If
        
    fileEx.SavefileEx.CloseSet Ex NothingRs.Close
    End 
    Function 

    Test thành công
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    domfootwear > 07-08-12, 08:52 AM

    (11-06-12, 09:47 AM)Xuân Thanh Đã viết: Sau khi test thử, sửa lại hàm ExAcEx như sau :
    1/ Thêm New trước Excel.Application(mở Ex trước khi mở file)
    2/ Sau khi Export xong, lưu file Excel và đóng nó bằng dòng lệnh
    fileEx.Save
    fileEx.Close
    Toàn bộ hàm được sửa lại như sau :

    Mã PHP:
    Function ExAcEx(tblTabName As StringstrFile As StringshSheet As StringCll As String)
        
    Dim Ex As New Excel.Application
        Dim fileEx 
    As Workbook
        Set fileEx 
    Ex.Workbooks.Open(strFile)
        
    Dim Ws As Worksheet
        Set Ws 
    fileEx.Worksheets(shSheet)
        
    Dim ijkAs Long
        i 
    Ws.Range(Cll).Row
        n 
    Ws.Range(Cll).Column
        Dim Rs 
    As Recordset
        Set Rs 
    CurrentDb.OpenRecordset(tblTabNamedbOpenTable)
        
    Rs.Fields.Count
        
    If Rs.RecordCount 0 Then
            Rs
    .MoveFirst
            
    Do Until Rs.EOF
                
    For 0 To j 1
                    Ws
    .Cells(ik) = Rs.Fields(k)
                
    Next
                Rs
    .MoveNext
                i 
    1
            Loop
        End 
    If
        
    fileEx.SavefileEx.CloseSet Ex NothingRs.Close
    End 
    Function 

    Test thành công

    Duyệt qua từng cell dữ liệu sẽ rất mất thời gian anh à, ta có thể dùng mãng để gán nó vào thì sẽ cải thiện tốc độ hơn anh à.
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    Xuân Thanh > 08-08-12, 10:50 AM

    (07-08-12, 08:52 AM)domfootwear Đã viết: Duyệt qua từng cell dữ liệu sẽ rất mất thời gian anh à, ta có thể dùng mãng để gán nó vào thì sẽ cải thiện tốc độ hơn anh à.

    Lâu lắm rồi không quay trở lại đề tài này. Đúng như domfootwear đã nói nhưng vì là bài đầu tiên nên viết cho những bạn mới quen với VBA. Với những bạn đã quen VBA và nâng cao lên thì sửa lại hàm như sau để cải thiện tốc độ

    Mã PHP:
    Function ExAcEx(tblTabName As StringstrFile As StringshSheet As StringCll As String)
        
    Dim Ex As New Excel.Application
        Dim fileEx 
    As Workbook
        Set fileEx 
    Ex.Workbooks.Open(strFile)
        
    Dim Ws As Worksheet
        Set Ws 
    fileEx.Worksheets(shSheet)
        
    Dim rs As Recordset
        Set rs 
    CurrentDb.OpenRecordset(tblTabNamedbOpenTable)
        
    Ws.Range(Cll).CopyFromRecordset rs
        fileEx
    .SavefileEx.CloseSet Ex Nothingrs.Close
    End 
    Function 

    Thank's domfootwear

    @Dom : Hôm nào rảnh về miền Tây ăn lúa non và uống cafe nhé
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    taoladarkpro > 30-08-12, 12:01 PM

    Anh xuan thanh ơi cho e hỏi cái này chút ! Mình có cái file excel tên là lsgd, giờ muốn viết cái chương trình import cái file đó vào access, sau đó chỉ lấy 2 cột trong file excel, cột thứ nhất là ngày gd, cột thứ 2 là số dư cuối.

    Ngày gd : thì phải hiện đầy đủ từ 1 -> cuối tháng, mặc dù trong file excel có khi không bắt đầu từ ngày 1

    Số dư cuối : nếu ko có phát sinh trong ngày ( giao dịch ) thì số dư cuối của ngày đó bằng số dư đầu của ngày sau !

    em đưa cho anh file excel và asscess bạn coi giúp em nha, chân thành cảm ơn !

    http://www.mediafire.com/?umpnncvz7use0p4
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    gioi01 > 11-07-13, 02:29 PM

    ai có file mẫu vừa export vừa import share cho mình với để nghiên cứu
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    bangnguyencong > 19-09-13, 11:42 AM

    Bị lỗi dòng màu đỏ dưới đây:

    Function ExAcEx(tblTabName As String, strFile As String, shSheet As String, Cll As String)
    Dim Ex As New Excel.Application
    Dim fileEx As Workbook
    Set fileEx = Ex.Workbooks.Open(strFile)
    Dim Ws As Worksheet
    Set Ws = fileEx.Worksheets(shSheet)
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset(tblTabName, dbOpenTable)
    Ws.Range(Cll).CopyFromRecordset rs
    fileEx.Save: fileEx.Close: Set Ex = Nothing: rs.Close
    End Function

    Bạn Xuân Thanh có thể gửi bản demo cho mọi người tham khảo được không?

    Trân trọng!
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    Xuân Thanh > 19-09-13, 02:47 PM

    (19-09-13, 11:42 AM)bangnguyencong Đã viết: Bị lỗi dòng màu đỏ dưới đây:

    Mã PHP:
    Function ExAcEx(tblTabName As StringstrFile As StringshSheet As StringCll As String)
        
    Dim Ex As New Excel.Application
        Dim fileEx 
    As Workbook
        Set fileEx 
    Ex.Workbooks.Open(strFile)
        
    Dim Ws As Worksheet
        Set Ws 
    fileEx.Worksheets(shSheet)
        
    Dim rs As Recordset
        Set rs 
    CurrentDb.OpenRecordset(tblTabNamedbOpenTable)
        
    Ws.Range(Cll).CopyFromRecordset rs
        fileEx
    .SavefileEx.CloseSet Ex Nothingrs.Close
    End 
    Function 

    Bạn Xuân Thanh có thể gửi bản demo cho mọi người tham khảo được không?

    Trân trọng!

    Trong cửa sổ VBE, vào Tools/Reference chọn thêm thư viện Microsoft Excel xx Object Libary. Bạn không đọc kỹ bài #1
    Thân mến
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    ndthanh29 > 12-06-14, 10:46 PM

    Bác Xuân Thanh cho mình hỏi là mình cần xuất từ Query ra Excel thì như thế nào? với lại sử dụng Function như thế nào bác? mình ko rành về access lắm, bác hướng dẫn cụ thể giùm nhé, tại mình dùng form tạo nút lệnh, tạo event onclick rồi dùng câu lệnh gọi hàm như bạn mà báo lỗi ở file excel tìm không thấy?
  • RE: Tạo hàm để Export dữ liệu từ một table Access ra một file Excel

    Xuân Thanh > 13-06-14, 03:21 PM

    Bạn xem lại câu lệnh gọi hàm tôi đã ghi ở #1

    Mã PHP:
    Private Sub cmdXuatEx_Click()
        
    Call ExAcEx ("tblDanhsachkhachhang","D:\Excel\Danh sach khach hang.xls","Danh sach","A2")
    End Sub 

    Giải thích thêm
    1/ tblDanhsachkhachhang : tên table chứa dữ liệu cần xuất ra Excel
    2/ D:\Excel\Danh sach khach hang.xls : là tên file Excel cần xuất dữ liệu bao gồm cã đường dẫn
    3/ Danh sach : tên Sheet Excel chứa dữ liệu cần xuất ra
    4/ A2 : Ô đầu tiên chứa dữ liệu cần xuất ra

    Muốn xuất một query thì phải viết thêm lệnh hoặc bạn Make Table Query ra một table rồi dùng lênh trên là OK

    Thân mến