-
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 String, strFile As String, shSheet As String, Cll 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 i, j, k, n As Integer
i = Ws.Range(Cll).Row
n = Ws.Range(Cll).Column
Dim Rs As Recordset
Set Rs = CurrentDb.OpenRecordset(tblTabName, dbOpenTable)
j = Rs.Fields.Count
If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
For k = 0 To j - 1
Ws.Cells(i, n + k) = Rs.Fields(k)
Next
i = i + 1
Loop
End If
Set Ex = Nothing: Rs.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 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 i, j, k, n As Long
i = Ws.Range(Cll).Row
n = Ws.Range(Cll).Column
Dim Rs As Recordset
Set Rs = CurrentDb.OpenRecordset(tblTabName, dbOpenTable)
j = Rs.Fields.Count
If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
For k = 0 To j - 1
Ws.Cells(i, n + k) = Rs.Fields(k)
Next
Rs.MoveNext
i = i + 1
Loop
End If
fileEx.Save: fileEx.Close: Set Ex = Nothing: Rs.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 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 i, j, k, n As Long
i = Ws.Range(Cll).Row
n = Ws.Range(Cll).Column
Dim Rs As Recordset
Set Rs = CurrentDb.OpenRecordset(tblTabName, dbOpenTable)
j = Rs.Fields.Count
If Rs.RecordCount > 0 Then
Rs.MoveFirst
Do Until Rs.EOF
For k = 0 To j - 1
Ws.Cells(i, n + k) = Rs.Fields(k)
Next
Rs.MoveNext
i = i + 1
Loop
End If
fileEx.Save: fileEx.Close: Set Ex = Nothing: Rs.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 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
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 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!
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