Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
#1
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!
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#2
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ế!
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn
#3
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!
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#4
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 !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#5
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ụ:
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.
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. 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ế!
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Noname
#6
(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 !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#7
(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!
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn
#8
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!
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#9
(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é:
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!
Đâ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é
http://thuthuataccess.com/forum/thread-4...l#pid19164
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 SqlStrCurrentProject.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 moian toantoi 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 timthay the cua Wordnhung 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
    '
NoLCGoodstbl_LC.HoldAmountNoInvoiceQuanlityAmountUSD,
    
' 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 
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.
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.


File đính kèm
.zip   Proposal_Form_V3.zip (Kích cỡ: 140.22 KB / Tải về: 38)
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Minh Tiên


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Cài đặt ODBC -nền tảng kết nối Access và nguồn dữ liệu khác Noname 33 19,317 01-12-16, 06:49 PM
Bài mới nhất: atula77
  Xây dựng Class Modules trong Access ( Cơ bản đến Nâng cao) maidinhdan 2 186 13-11-16, 05:32 PM
Bài mới nhất: cpucloi
  [Help] SQL lỗi khi tham chiếu trường trong Forms Phung Duc 1 73 02-11-16, 03:17 PM
Bài mới nhất: Minh Tiên
  Hướng Dẫn Demo tổng hợp xuất Table, Query sang Excel có điều kiện ở vị trí nào cũng được maidinhdan 18 2,793 20-10-16, 11:51 AM
Bài mới nhất: jeck09nt
  Ms Access VBA và Google drive, một vài ý tưởng trong chia sẻ và đồng bộ số liệu... paulsteigel 46 3,859 07-10-16, 02:43 PM
Bài mới nhất: kieu manh

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ