• Xuất dữ liệu từ một record trong table ra 1 cell chỉ định trong Excel
  • 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ụ:
    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ế!
  • 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é:
    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.