-
Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
Minh Tiên > 14-07-13, 11:21 AM
Nhờ các sư huynh chỉ giáo đoạn Code xuất dữ liệu từ 1 record được chọn trong table ra 1 cell chỉ định trong Excel mà không làm thay đổi các cell đã có dữ liệu khác !
Thanks! -
RE: Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
paulsteigel > 14-07-13, 12:01 PM
Bạn Tiến cần hỏi rõ thêm chút nữa: "1 trường của một bản ghi hay là nhiều trường?".
Nếu là nhiều trường thì phải xuất ra một vùng có 1 dòng và nhiều cột trong Excel;
Nếu là 1 trường thì chỉ cần đưa vào 1 Cell đich theo điều kiện nào đó hay tùy ý?
Về nguyên tắc, với trương hợp của bạn thì cần giải quyết được mấy việc sau:
1. Kết nối với file Excel cần xuất ra; Cái này khá đơn giản, đã có một số bài trong diễn đàn này nói về việc xuất dữ liệu ra excel rồi đấy.
2. Truy vấn để lấy dữ liệu của bản ghi cần xuất;
3. Ghi vào địa chỉ ô/ vùng đã được xác định theo yêu cầu đầu bài.
Xin võ vẽ vài dòng thế! -
RE: Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
Minh Tiên > 14-07-13, 01:00 PM
Cảm ơn paulsteigel đã "võ vẽ" ! Đúng làm mình cần xuất từ 1 trường vào 1 cell chỉ định trong Excel.
Mình đã làm được rồi ! Thanks! -
RE: Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
Minh Tiên > 15-07-13, 03:18 PM
Mình đã áp dụng đoạn code sau của bạn Xuân Thanh:
---
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
Khi cần goi hàm ExAcEx như sau
Call ExAcEx ("tblDanhsachkhachhang","D:\Excel\Danh sach khach hang.xls","Danh sach","A2")
---
Việc xuất dữ liệu từ Access ra Excel rất Ok ! Xong còn vấn đề này xin các sư huynh chỉ giáo thêm:
Mình muốn xuất một số trường trong 1 hoặc nhiều table ra một hoặc một số cell trong Excel. Ví dụ:
1.Xuất trường TenKH trong tblDanhsachkhachhang ra Cell A12;
2.Xuất trường Doanhso trong tblDoanhthu ra cell C12;
3. ...
Mình định mỗi trường cần xuất gọi: ExAcEx ... một lần. Ko biết còn cách nào khác gọn hơn không, Nhờ các sư huynh chỉ giúp.
Cảm ơn nhiều ! -
RE: Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
paulsteigel > 15-07-13, 10:08 PM
Trích dẫn:Mình muốn xuất một số trường trong 1 hoặc nhiều table ra một hoặc một số cell trong Excel. Ví dụ:
Nếu bạn muốn làm những điều trên thì nên áp dụng cách tiếp cận khác. Bởi những lẽ sau:
1.Xuất trường TenKH trong tblDanhsachkhachhang ra Cell A12;
2.Xuất trường Doanhso trong tblDoanhthu ra cell C12;
3. ...
Mình định mỗi trường cần xuất gọi: ExAcEx ... một lần. Ko biết còn cách nào khác gọn hơn không, Nhờ các sư huynh chỉ giúp.
1. Nếu liên tục phải gọi và khởi tạo Excel Application mới e rằng sẽ kém hiệu quả.
[Nên áp dụng cách tiếp cận tìm và bắt một phiên làm việc hiện đang tồn tại của Excel, tránh tạo, xóa nhiều lần]
(Bài này tôi có nói ở đây: http://thuthuataccess.com/forum/thread-4...l#pid18925);
2. Vì mỗi lần xuất, có vẻ như bạn chỉ lấy 1 mẫu tin, vậy hãy thu thập hết các mẫu tin cần xuất ra 1 mảng 2 chiều trong Access đã trong đó lưu giá trị cần xuất và địa chỉ ô cần xuất tới. Sau đó mới chuyển đến thủ tục kết nối với Excel và chuyển giá trị lần lượt theo vòng lặp.
Cách tiếp cận như vậy đảm bảo:
+ Bạn chỉ mở file Excel 1 lần;
+ Bạn viết riêng 1 thủ tục lấy số liệu trong Access để trả về một chuỗi để dễ kiểm soát và xử lý.
+ Cải thiện hiệu quả chương trình!
Xin có vài dòng võ vẽ thế! -
RE: Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
Minh Tiên > 16-07-13, 10:23 AM
(15-07-13, 10:08 PM)paulsteigel Đã viết: ... Vì mỗi lần xuất, có vẻ như bạn chỉ lấy 1 mẫu tin, vậy hãy thu thập hết các mẫu tin cần xuất ra 1 mảng 2 chiều trong Access đã trong đó lưu giá trị cần xuất và địa chỉ ô cần xuất tới. Sau đó mới chuyển đến thủ tục kết nối với Excel và chuyển giá trị lần lượt theo vòng lặp.
Rất cảm ơn ý kiến của bạn. Mình cũng đã nghĩ đến việc gom các mẫu tin vào 1 table rồi nhưng "không nghĩ đến" cách đưa địa chỉ cần xuất ra vào table luôn để khi truy xuất được liên tục, tránh kết nối nhiều lần.
Mình sẽ thử. Nếu No OK sẽ hỏi tiếp.
Thanks ! -
RE: Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
paulsteigel > 16-07-13, 11:30 PM
(16-07-13, 10:23 AM)tmtien261 Đã viết:
(15-07-13, 10:08 PM)paulsteigel Đã viết: ... Vì mỗi lần xuất, có vẻ như bạn chỉ lấy 1 mẫu tin, vậy hãy thu thập hết các mẫu tin cần xuất ra 1 mảng 2 chiều trong Access đã trong đó lưu giá trị cần xuất và địa chỉ ô cần xuất tới. Sau đó mới chuyển đến thủ tục kết nối với Excel và chuyển giá trị lần lượt theo vòng lặp.
Rất cảm ơn ý kiến của bạn. Mình cũng đã nghĩ đến việc gom các mẫu tin vào 1 table rồi nhưng "không nghĩ đến" cách đưa địa chỉ cần xuất ra vào table luôn để khi truy xuất được liên tục, tránh kết nối nhiều lần.
Mình sẽ thử. Nếu No OK sẽ hỏi tiếp.
Thanks !
Ý mình là một mảng 2 chiều! Đừng tạo bảng làm gì cho mất thời gian! -
RE: Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
Minh Tiên > 18-07-13, 05:18 PM
Nhờ bạn: "paulsteigel" giúp vấn đề iên quan đến việc xuất dữ liệu từ Acc sang Ms Word nhé:
1. Bạn có ví dụ nào liên quan đến việc gom dữ liệu rãi rác về thành mãng 2 chiều để xuất ra Ms Word ko ? hay đoạn code nào cũng được cho mình xin để "Ngâm cứu".
2. Bạn chỉ mình cách vừa xuất dữ liệu ra Ms word vữa mở Ms word lên để xem trình tự xuất.
Việc gom dữ liệu và table như mình nói ở trên mình đã làm được với đoạn code:
Function TMBCTC()
TMBCTC = False
Dim rs As New ADODB.Recordset
Dim SqlStr As String
SqlStr = "SELECT * FROM tblThuyetminhBCTC"
rs.Open SqlStr, CurrentProject.AccessConnection
If rs.EOF Then
MsgBox "Chua co so lieu !"
GoTo ExitSub
End If
Dim WordApp As New Word.Application
Dim WordDoc As Word.Document
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open(CurrentProject.Path & "\Thunghiem.dotx")
Dim j As Integer
Dim strDich, strNguon As String
For j = 1 To 5
strNguon = DLookup("[Maso]", "tblThuyetminhBCTC", "[ID] = " & j)
strDich = DLookup("[Dulieutable]", "tblThuyetminhBCTC", "[ID] = " & j)
ReplaceField strNguon, strDich, WordDoc
Next
If Dir(CurrentProject.Path & "\" & "ThunghiemTMBCTCdocx") <> "" Then Kill CurrentProject.Path & "\" & "ThunghiemTMBCTC.docx"
WordDoc.SaveAs CurrentProject.Path & "\" & "ThunghiemTMBCTC.docx"
MsgBox "Da tao thanh cong: " & CurrentProject.Path & "\" & "ThunghiemTMBCTC.docx", vbInformation
Set WordDoc = Nothing
Set WordApp = Nothing
ExitSub:
rs.Close
TMBCTC = True
End Function
Private Sub ReplaceField(FindText, RepText, Handler As Word.Document)
Handler.Range.Find.ClearFormatting
Handler.Range.Find.Replacement.ClearFormatting
With Handler.Range.Find
.Text = FindText
.Replacement.Text = RepText
.Forward = True
.Wrap = 1
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
Thanks! -
RE: Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
paulsteigel > 18-07-13, 05:53 PM
(18-07-13, 05:18 PM)tmtien261 Đã viết: Nhờ bạn: "paulsteigel" giúp vấn đề iên quan đến việc xuất dữ liệu từ Acc sang Ms Word nhé:
Đây chính là một ví dụ mình viết đã lâu cho một bạn ở đâu đó trong Nam, bạn hãy vào bài này, mình có viết thêm và cập nhập thêm vài dòng rồi đấy! bạn xem mã trong form frm_ToWord nhé
1. Bạn có ví dụ nào liên quan đến việc gom dữ liệu rãi rác về thành mãng 2 chiều để xuất ra Ms Word ko ? hay đoạn code nào cũng được cho mình xin để "Ngâm cứu".
2. Bạn chỉ mình cách vừa xuất dữ liệu ra Ms word vữa mở Ms word lên để xem trình tự xuất.
....
Thanks!
http://thuthuataccess.com/forum/thread-4...l#pid19164
Ngoài ra có thể xem thêm mấy cái dưới đây. Nhìn chung, sau vài năm thì kinh nghiệm cũng có sự cải tiến nhất định.Mã PHP:Private Sub cmdWord_Click()
' Kiem tra xem da lua chon Hoa don chua
If Nz(lsInvoice, "Null") = "Null" Then Exit Sub
' Access se co gang dua so lieu vao mot mau Word duoc thiet ke san bang cach su dung doan code sau
' Bay gio ta se thiet lap truy van theo so lieu co trong Listbox
' truy van co ten la qry_paymentDetailLC se co tat ca nhung chi tiet can co cua Van don...
Dim rs As New ADODB.Recordset
Dim SqlStr As String
SqlStr = "Select * from qry_paymentDetailLC where NoInvoice='" & lsInvoice & "';"
rs.Open SqlStr, CurrentProject.AccessConnection
If rs.EOF Then
MsgBox "There is no data for selected invoice..."
GoTo ExitSub
End If
' Dua so lieu sang Word
' Khoi tao ket noi voi mot phien lam viec cua Word - day la cach moi, an toan, toi moi bo sung
Dim WordApp As Object
Dim WordDoc As Object
Set WordDoc = CreateWordDocument(WordApp)
' Lenh nay se giau man hinh Word neu duoc
WordApp.Visible = True
' Mo file Mau ra
Set WordDoc = WordApp.Documents.Open(CurrentProject.Path & "\BL_Endorsement.doc")
' Chuan bi cho qua trinh thay the chuoi trong Word
' Day la vi du cua viec su dung tinh nang tim/ thay the cua Word, nhung tu khoa can thay the phai la duy nhat
' Neu muon lap lai thi chi viec lap lai tu khoa
'[DATE_DAY]/[DATE_MONTH]/[DATE_YEAR]
'[LC_NUMBER]/[INVOICE_NUMBER]/[BILLED_CURRENTCY] [INVOICE_AMOUNT]/[COMMODITY]/[QUANTITY] [M_UNIT]
' De co he thong va chuyen nghiep thi ban nen thiet lap mot bang de quan ly du lieu nay
' Toi chi lam vi du de ban co the ap dung thoi
' Vi the toi su dung ten truong lam tham so dau vao de tim kiem vaf luu thanh 2 mang
' 1 mang chua ten truong va 1 mang chua tu khoa
'NoLC, Goods, tbl_LC.HoldAmount, NoInvoice, Quanlity, AmountUSD,
' Declaration of variable
Dim KeyWords As String, FieldName As String, i As Long
KeyWords = "[LC_NUMBER]/[INVOICE_NUMBER]/[INVOICE_AMOUNT]/[COMMODITY]/[QUANTITY]"
FieldName = "NoLC/NoInvoice/AmountUSD/Goods/Quanlity"
'KeyWords = "[LC_NUMBER]/[INVOICE_NUMBER]/[BILLED_CURRENTCY]/[INVOICE_AMOUNT]/[COMMODITY]/[QUANTITY]/[M_UNIT]"
'FieldName = "NoLC/NoInvoice/USD/AmountUSD/Goods/Quanlity/Unknown"
Dim ArrayWord As Variant
Dim ArrayField As Variant
ArrayWord = Split(KeyWords, "/")
ArrayField = Split(FieldName, "/")
For i = LBound(ArrayWord) To UBound(ArrayWord)
ReplaceField ArrayWord(i), Nz(rs.Fields(ArrayField(i)), ""), WordDoc
Next
' Dua truong ngay vao Mau
ReplaceField "[DATE_DAY]", Format(Now, "dd"), WordDoc
ReplaceField "[DATE_MONTH]", Format(Now, "mm"), WordDoc
ReplaceField "[DATE_YEAR]", Format(Now, "yyyy"), WordDoc
' Luu file Word
If Dir(CurrentProject.Path & "\" & rs.Fields("NoLC") & ".doc") <> "" Then Kill CurrentProject.Path & "\" & rs.Fields("NoLC") & ".doc"
WordDoc.SaveAs CurrentProject.Path & "\" & rs.Fields("NoLC") & ".doc"
MsgBox "A document was successfully created at: " & CurrentProject.Path & "\" & rs.Fields("NoLC") & ".doc", vbInformation
'WordDoc.Close
WordApp.Activate
' clean up memory
Set WordDoc = Nothing
Set WordApp = Nothing
ExitSub:
rs.Close
End Sub
Sub ReplaceField(FindText, RepText, Handler As Object)
' Thu tuc thay the chuoi dau vao!
Handler.Range.Find.ClearFormatting
Handler.Range.Find.Replacement.ClearFormatting
With Handler.Range.Find
.Text = FindText
.Replacement.Text = RepText
.Forward = True
.Wrap = 1
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
Private Sub lsLC_AfterUpdate()
' Refresh data for lsInvoice
If Nz(lsLC, -1) = -1 Then Exit Sub
With lsInvoice
.RowSource = "SELECT NolC, NoInvoice FROM tbl_Invoice where NolC=" & lsLC & ";"
End With
End Sub
Bạn thử xem ví dụ này nhé: Tôi viết demo để xuất dữ liệu ra word đấy!
http://www.sfdp.net/tai-lieu-khac/taptin...bangaccess
Hoặc là một tiếp cận khác nữa
http://www.sfdp.net/sedp/nmprp2/kh2014/S...ects=0&d=1
Cái này viết bằng Excel nhưng tương tác với Word theo cách tương tự - bạn cài và xem. Mật khẩu bỏ pass là d1ndh1sk nhé. Bạn xem ở thủ tục Merge trong mdlMain ... có nhiều cái có thể dùng được theo yêu cầu của bạn. Tuy nhiên, ta có thể bàn sâu thêm ở chủ đề này của bạn nếu bạng muốn.
Hoặc cái này nữa kèm theo trong bài viết.