maidinhdan > 05-02-15, 01:59 AM
Private Sub cmdExport_Click()
On Error Resume Next
Dim db As DAO.Database
Dim rs1 As DAO.Recordset ' table1'
Dim rs2 As DAO.Recordset 'table2'
Dim tb1 As String ' table1'
Dim tb2 As String ' table2'
Dim oApp As New Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
Set oBook = oApp.Workbooks.Open(CurrentProject.Path & "\Danh sach khach hang.xlt")
tb1 = "select * from tblKhach" ' tblKhach là tên table 1'
tb2 = "select * from tblchu" ' tblchu là tên table 2'
Set oSheet = oBook.Sheets("Danh Sach")
Set db = CurrentDb
' Chép dữ liệu từ table1 vào file Excel bắt đầu từ cột B dòng thứ 7'
Set rs1 = db.OpenRecordset(tb1, dbOpenSnapshot)
oSheet.Range("b7").CopyFromRecordset rs1 'b7: lla cot B dong thu 7'
' Chép dữ liệu từ table2 vào file Excel bắt đầu từ cột B dòng thứ 25'
Set rs2 = db.OpenRecordset(tb2, dbOpenSnapshot)
oSheet.Range("b25").CopyFromRecordset rs2 'b25: lla cot B dong thu 25'
' Xoa bien va giai phong bo nho dong thoi mo file Excel'
rs1.Close
rs2.Close
oApp.Visible = True
oApp.UserControl = True
db.Close
End Sub
Set oSheet = oBook.Sheets("Sửa lại tên Sheet2")
dinhnhieu > 05-02-15, 08:26 AM
DoquangLam > 05-02-15, 10:56 AM
maidinhdan > 05-02-15, 12:49 PM
(05-02-15, 08:26 AM)dinhnhieu Đã viết: Cảm ơn maidinhdanh rất nhiều vì sự nhiệt tình của bạn thức rất khuya để giúp đỡ cho mình.
Khổng Tử nói: “Biết thì nói là biết, không biết thì nói là không biết", thật tình trước đây (>10 năm) mình cũng từng đã học qua access và visual rồi, nhưng học rồi cho qua luôn bởi từ đó đến nay cũng không có áp dụng. Module xuất sang excel cũng có mày mò lượm lặt của các cao thủ rồi nhưng lại không ứng dụng được (trong demo gửi lên cũng có), khổ nỗi ý tưởng muốn như vậy như mà không biết cách nào thực hiện, mạo mụi đặt câu hỏi để nhờ trợ giúp và sự giúp đỡ chân tình của các bạn là nguồn kiến thức vô giá đối với mình rồi.
Một lần nữa rất cảm ơn và có lẽ còn lần sau nữa hihi...
Between [Forms]![F_ThuocTonXuatNhap]![TuNgay] And [Forms]![F_ThuocTonXuatNhap]![DenNgay]
Một câu này thôi là đáng giá ngàn vàng, giúp mình giải quyết được rất nhiều vấn đề.
Và thêm một sự kiện này nữa ở ô đến ngày trên mainform: F_ThuocTonXuatNhapSub.Requery là ok ngay mọi cái đều ổn.
maidinhdan > 05-02-15, 02:37 PM
(05-02-15, 01:59 AM)maidinhdan Đã viết: Như lời đã hứa từ những hôm trước hôm nay xin mạo mụi gọi là tổng hợp chứ code không phải tự mình viết, chỉ ngâm cứu chỉnh sửa lại chút để ra thành bài Demo tổng hợp xuất Table, Query sang Excel có điều kiện
Thông tin về demo:
1. Xuất từ table ra file Excel theo mẫu Excel có sẳn và tự đặt tên;
2. Xuất từ Query có đặt điều kiện ra file Excel theo theo mẫu Excel có sẳn và tự đặt tên.
Form demo
Mẫu Excel dựng sẳn
Demo: https://sites.google.com/site/congthucas...ects=0&d=1
Nguồn được tổng hợp sưu tầm trên trang thuthuataccess.( Tác giả của code được đính trong demo)
Pass VBA: ngày mai post. Vì sợ nó chạy lỗi. gần 1 giờ rồi
Pass VBA: codobanghiep
maidinhdan > 07-02-15, 10:30 PM
DoquangLam > 08-02-15, 11:16 AM
maidinhdan > 08-02-15, 02:51 PM
(08-02-15, 11:16 AM)DoquangLam Đã viết: Các bạn cho hỏi: Mình sd office 2003 thì đoạn code này có phải thay đổi gì không? Cám ơn.
Mã:'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
'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
Microsoft DAO 3.6 Object Lybary (hoặc hơn)
Microsoft Excel 11 Object Lybary (hoặc hơn)
Microsoft ActiveX Data Objects 2.8 Lybary (hoặc hơn)
maidinhdan > 25-03-15, 11:37 PM
Private Sub cmdExport_Click()
On Error Resume Next
Dim db As DAO.Database
Dim rs1 As DAO.Recordset ' table1'
Dim rs2 As DAO.Recordset 'table2'
Dim tb1 As String ' table1'
Dim tb2 As String ' table2'
Dim oApp As New Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet
Set oBook = oApp.Workbooks.Open(CurrentProject.Path & "\Danh sach khach hang.xlt")
tb1 = "select * from tblKhach" ' tblKhach là tên table 1'
tb2 = "select * from tblchu" ' tblchu là tên table 2'
Set oSheet = oBook.Sheets("Danh Sach")
Set db = CurrentDb
' Chép dữ liệu từ table1 vào file Excel bắt đầu từ cột B dòng thứ 7'
Set rs1 = db.OpenRecordset(tb1, dbOpenSnapshot)
oSheet.Range("b7").CopyFromRecordset rs1 'b7: lla cot B dong thu 7'
' Chép dữ liệu từ table2 vào file Excel bắt đầu từ cột B dòng thứ 25'
Set rs2 = db.OpenRecordset(tb2, dbOpenSnapshot)
oSheet.Range("b25").CopyFromRecordset rs2 'b25: lla cot B dong thu 25'
' Xoa bien va giai phong bo nho dong thoi mo file Excel'
rs1.Close
rs2.Close
oApp.Visible = True
oApp.UserControl = True
db.Close
End Sub
Set oSheet = oBook.Sheets("Sửa lại tên Sheet2")