Xuất dử liệu từ Access ra Excel và ngược lại

Liên hệ QC

kellyfe

Thành viên chính thức
Tham gia
25/5/07
Bài viết
75
Được thích
40
mình đang sử dụng một chương trình phần mềm access quản lý hệ thống kế toán, nay mình muốn lấy những thông tin từ chương trình phần mền ra excel để làm báo cáo một số việc nhưng mình không biết cách để xuất liệu ra, vì chương trình phần mềm mình sử dụng lại không có chức năng xuất ra excel, có cao thủ nào biết cách chỉ giúp mình với, mình xin đa tạ và hứa dẫn đi ăn kem...
 
Có nhiều cách xuất dữ liệu tư Ac ra Ex. Ở đây xin giới thiệu với bạn 2 cách đơn giản nhất
1/ Xuất dữ liệu tứ Table ra : Mở chương trình Ac, chọn table cần xuất, vào menu File chọn Export, chọn Microsoft Excel...từ hộp Save as types tuỳ phiên bản bạn muốn xuất, đặt tên file, chọn thư mục lưu rồi nhấn Export . Cuối cùng mở file Ex vừa lưu để xem và chỉnh sửa
2/ Xuất dữ liệu của 1 Report : Mở Report cần xuất .Nhấn biểu tượng OfficeLinks, chọn Analyze It with Microsoft Office Excel
 
à mình quên là mình sử dụng phần mềm, nên không có những chức năng như anhphuong hướng dẫn, làm sao đây???
 
Chào bạn,
Tất cả các phần mềm thông thường đều hổ trợ xuất ra Excel. Nếu không có hổ trợ thì ... chắc có lẻ là phần mềm không tốt.
Vì hầu hết các phần mềm hiện nay đều cho xuất ra định dạng Excel.

Lê Văn Duyệt
 
levanduyet ơi mình xem trên diễn đàn mình công nhận bạn là cao thủ đó, không biết mình có một số câu hỏi muốn thỉnh giáo với bạn bạn có bằng lòng không???
 
mình có một file quản lý kho và quản lý công nợ khi nhập kho, in phiếu nhập xuất kho và bảng báo cáo tổng hợp kho, toàn bộ file mình chỉ sử dụng công thức chứ không lập trình vì mình không biết về lập trình, mình muốn post bài này lên để mọi người tham khảo và có ai có thể lập trình để thay thế cho những công thức mình làm thì giúp mình với, nay mình không biết cách để post lên, file mình đến >4KB lận, mình phải làm sao?
 
kellyfe đã viết:
mình có một file quản lý kho và quản lý công nợ khi nhập kho, in phiếu nhập xuất kho và bảng báo cáo tổng hợp kho, toàn bộ file mình chỉ sử dụng công thức chứ không lập trình vì mình không biết về lập trình, mình muốn post bài này lên để mọi người tham khảo và có ai có thể lập trình để thay thế cho những công thức mình làm thì giúp mình với, nay mình không biết cách để post lên, file mình đến >4KB lận, mình phải làm sao?

1/ Nếu bạn muốn post bài xin hãy đọc bài kỹ thuật post bài đăng trong diễn đàn này
2/ Nếu không được xin gửi qua mail của anh Duyệt hoặc của ai đó cung được, các bạn đó sẽ post bài giùm
Thân
 
Anh Duyet oi! Giup em voi.
Lam the nao de tu dong dua so lieu tu bang tong hop theo doi tai san ra cac So tai san chi tiet theo don vi su dung va cac the tai san theo tung loai tai san? Xin hay chi ro cho em vi em moi hoc Excel ma (Xin moi nguoi dung cuoi nha!)
 
kellyfe đã viết:
levanduyet oi mình có xem qua diển đàn này thì mình thấy nó cũng gần như những gì mình cần làm trên file của mình
http://www.giaiphapexcel.com/forum/showthread.php?t=2554
Chào bạn Kellyfe,

Thật ra nếu để ý các vấn đề các bạn trên trang web này quan tâm thông thường là:
_Nhập, In phiếu Xuất/Nhập; Thu/Chi; Hóa đơn; Phiếu tạm ứng,...In làm nhiều trang, Tổng ở cuối mỗi trang in,...
_Nhập / xuất / tồn...
_Nhập dữ liệu chi tiết, sau đó đưa ra bảng tổng hợp lại.
_Tạo các form để nhập liệu cho nhanh.
Tôi nghĩ đó là lý do bạn thấy các bài gần gũi với những gì bạn làm.

levanduyet chi minh post file và lập trình cho mình nhé, đa tạ
Nếu bạn không thể post bài thì gởi cho tôi, tôi sẽ giúp bạn đưa lên.

Anh Duyet oi! Giup em voi.
Lam the nao de tu dong dua so lieu tu bang tong hop theo doi tai san ra cac So tai san chi tiet theo don vi su dung va cac the tai san theo tung loai tai san? Xin hay chi ro cho em vi em moi hoc Excel ma (Xin moi nguoi dung cuoi nha!)
Bạn nên đưa ra bài toán cụ thể của bạn, mọi người sẽ trợ giúp. Và chú ý: viết tiếng việt có dấu.

Lê Văn Duyệt
 
Xin chỉ giúp có cách nào để nhận diện máy Scaner ( loại cầm tay hoặc máy scaner để bàn ) trong excel để khi scan một sản phẩm thì nó lọc trong danh sách đã được tạo sẵn trong đó và ghi lên một sheet nào đó trong excel . Nếu không có trong danh sách thì hỏi có cập nhật không , để cập nhật trong danh sách Nếu có file sẵn thì cho xin

Thành thật cảm ơn . Tôi đang cần gấp .

 
Lấy dữ liệu từ Access đặt vào Excel

(Nguồn: http://www.excelguru.ca/node/23)

Đôi khi chúng ta cần lấy dữ liệu từ Access và đặt chúng vào Excel chỉ cần dựa vào SQL. Một ví dụ như Add-in của anh Tuân A-Tools

Xin giới thiệu các bạn bài viết dựa trên đường link trên:
_Mục đích: Lấy dữ liệu từ Access đặt vào Worksheet trong Excel. Sử dụng ADO + SQL.
_Chú ý:
+ Không có lấy tiêu đề (Tên trường). Chúng ta có thể sửa lại đoạn code để thực hiện yêu cầu của mình.
+ Phải tham chiếu đến Microsoft ActiveX Data Objects Libary.
+ Sử dụng từ office 2003 trở về trước.

Đoạn code chính (các bạn đặt trong module)
PHP:
Option Explicit

'Constant for Database connection string'
Private Const glob_DBPath = "C:\Temp\Examples.mdb"
Private Const glob_sConnect = _
               "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & glob_DBPath & ";"

Private Sub RetrieveRecordset(strSQL As String, clTrgt As Range)
'Author       : Ken Puls ([URL="http://www.excelguru.ca/"]www.excelguru.ca[/URL])'
'Macro Purpose: To retrieve a recordset from a database (via an SQL query) and place'
'               it in the supplied worksheet range'
'NOTE         : Requires a reference to "Microsoft ActiveX Data Objects 2.x Library"'
'               (Developed with reference to version 2.0 of the above)'

    Dim cnt As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim rcArray As Variant
    Dim lFields As Long
    Dim lRecrds As Long
    Dim lCol As Long
    Dim lRow As Long

    'Open connection to the database'
    cnt.Open glob_sConnect

    'Open recordset based on Orders table'
    rst.Open strSQL, cnt

    'Count the number of fields to place in the worksheet'
    lFields = rst.Fields.Count

    'Check version of Excel'
    If Val(Mid(Application.Version, 1, InStr(1, Application.Version, ".") - 1)) > 8 Then
        'EXCEL 2000 or 2002: Use CopyFromRecordset'

        'Copy the recordset from the database'
        On Error Resume Next
        clTrgt.CopyFromRecordset rst
        
        'CopyFromRecordset will fail if the recordset contains an OLE'
        'object field or array data such as hierarchical recordsets'
        If Err.Number <> 0 Then GoTo EarlyExit
    
    Else
        'EXCEL 97 or earlier: Use GetRows then copy array to Excel'

        'Copy recordset to an array'
        rcArray = rst.GetRows

        'Determine number of records (adds 1 since 0 based array)'
        lRecrds = UBound(rcArray, 2) + 1

        'Check the array for contents that are not valid when'
        'copying the array to an Excel worksheet'
        For lCol = 0 To lFields - 1
            For lRow = 0 To lRecrds - 1
                'Take care of Date fields'
                If IsDate(rcArray(lCol, lRow)) Then
                    rcArray(lCol, lRow) = Format(rcArray(lCol, lRow))
                    'Take care of OLE object fields or array fields'
                ElseIf IsArray(rcArray(lCol, lRow)) Then
                    rcArray(lCol, lRow) = "Array Field"
                End If
            Next lRow
        Next lCol

        'Transpose and place the array in the worksheet'
        clTrgt.Resize(lRecrds, lFields).Value = TransposeDim(rcArray)
    End If

EarlyExit:
    'Close and release the ADO objects'
    rst.Close
    cnt.Close
    Set rst = Nothing
    Set cnt = Nothing
    On Error GoTo 0

End Sub
Mã:
[B]Private Function TransposeDim(v As Variant) As Variant[/B]
'Function Purpose:  Transpose a 0-based array (v)'

    Dim x As Long, Y As Long, Xupper As Long, Yupper As Long
    Dim tempArray As Variant

    Xupper = UBound(v, 2)
    Yupper = UBound(v, 1)

    ReDim tempArray(Xupper, Yupper)
    For x = 0 To Xupper
        For Y = 0 To Yupper
            tempArray(x, Y) = v(Y, x)
        Next Y
    Next x

    TransposeDim = tempArray

[B]End Function[/B]

Các bạn dùng thủ tục sau để đưa dữ liệu ra Excel

PHP:
Sub GetRecords()
'Macro Purpose: To retrieve a recordset to an Excel worksheet'

    Dim sSQLQry As String
    Dim rngTarget As Range

    'Generate the SQL query and set the range to place the data in'
    sSQLQry = "SELECT tblMoorages.CustID, tblMoorages.Type, " & _
            "tblMoorages.DatePaid, tblMoorages.Amount FROM tblMoorages;"
    ActiveSheet.Cells.ClearContents
    Set rngTarget = ActiveSheet.Range("A2")

    'Retrieve the records'
    Call RetrieveRecordset(sSQLQry, rngTarget)

End Sub
Nếu có thể chúng ta có thể viết một hàm để lấy dữ liệu giống như A-Tools của Anh Tuân.

VBAVN
 
Xuất dữ liệu từ Range vào Access

(Nguồn: http://www.excelguru.ca/node/18)

Khi chúng ta đã phát triển các công cụ của chính mình như Lấy dữ liệu từ Access ra Excel.
Chắc chắn chúng ta sẽ nghĩ về cách ngược lại là xuất dữ liệu từ Range vào bảng trong Access.
Chúng ta hãy cùng nhau xem ví dụ ở trang link trên:

Mã:
Sub DB_Insert_via_ADOSQL()
'Author       : Ken Puls ([URL="http://www.excelguru.ca/"]www.excelguru.ca[/URL])
'Macro purpose: To add record to Access database using ADO and SQL
'NOTE:  Reference to Microsoft ActiveX Data Objects Libary required

    Dim cnt As New ADODB.Connection, _
            rst As New ADODB.Recordset, _
            dbPath As String, _
            tblName As String, _
            rngColHeads As Range, _
            rngTblRcds As Range, _
            colHead As String, _
            rcdDetail As String, _
            ch As Integer, _
            cl As Integer, _
            notNull As Boolean

    'Set the string to the path of your database as defined on the worksheet
    dbPath = ActiveSheet.Range("B1").Value
    tblName = ActiveSheet.Range("B2").Value
    Set rngColHeads = ActiveSheet.Range("tblHeadings")
    Set rngTblRcds = ActiveSheet.Range("tblRecords")

    'Concatenate a string with the names of the column headings
    colHead = " ("
    For ch = 1 To rngColHeads.Count
        colHead = colHead & rngColHeads.Columns(ch).Value
        Select Case ch
            Case Is = rngColHeads.Count
                colHead = colHead & ")"
            Case Else
                colHead = colHead & ","
        End Select
    Next ch

    'Open connection to the database
    cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & dbPath & ";"

    'Begin transaction processing
    On Error GoTo EndUpdate
    cnt.BeginTrans

    'Insert records into database from worksheet table
    For cl = 1 To rngTblRcds.Rows.Count

        'Assume record is completely Null, and open record string for concatenation
        notNull = False
        rcdDetail = "('"

        'Evaluate field in the record
        For ch = 1 To rngColHeads.Count
            Select Case rngTblRcds.Rows(cl).Columns(ch).Value
                    'if empty, append value of null to string
                Case Is = Empty
                    Select Case ch
                        Case Is = rngColHeads.Count
                            rcdDetail = Left(rcdDetail, Len(rcdDetail) - 1) & "NULL)"
                        Case Else
                            rcdDetail = Left(rcdDetail, Len(rcdDetail) - 1) & "NULL,'"
                    End Select

                    'if not empty, set notNull to true, and append value to string
                Case Else
                    notNull = True
                    Select Case ch
                        Case Is = rngColHeads.Count
                            rcdDetail = rcdDetail & rngTblRcds.Rows(cl).Columns(ch).Value & "')"
                        Case Else
                            rcdDetail = rcdDetail & rngTblRcds.Rows(cl).Columns(ch).Value & "','"
                    End Select
            End Select
        Next ch

        'If record consists of only Null values, do not insert it to table, otherwise
        'insert the record
        Select Case notNull
            Case Is = True
                rst.Open "INSERT INTO " & tblName & colHead & " VALUES " & rcdDetail, cnt
            Case Is = False
                'do not insert record
        End Select
    Next cl

EndUpdate:
    'Check if error was encounted
    If Err.Number <> 0 Then
        'Error encountered.  Rollback transaction and inform user
        On Error Resume Next
        cnt.RollbackTrans
        MsgBox "There was an error.  Update was not succesful!", vbCritical, "Error!"
    Else
        On Error Resume Next
        cnt.CommitTrans
    End If

    'Close the ADO objects
    cnt.Close
    Set rst = Nothing
    Set cnt = Nothing
    On Error GoTo 0
End Sub

_Chú ý:
+ Range A3:F3 được đặt tên là "tblHeadings"
+ Range A4:F11 được đặt tên là "tblRecords"
+ Phải tham chiếu đến Microsoft ActiveX Data Objects Libary

Excel_To_Access.jpg


Việc áp dụng các vấn đề cơ bản mà tác giả giới thiệu chúng ta sẽ thực tập ở bài sau và áp dụng cho việc lưu giữ và truy vấn các hóa đơn.

VBAVN
 
Lấy dữ liệu từ Access, tạo báo cáo trong Excel

To: BinhTam, và các thành viên khác,

Do vô ý tôi xóa bài đầu tiên của tôi trong thread (tôi post giúp BinhTam, nhưng sau đó BinhTam lại post tiếp ở thread thứ #2). Vì vậy topic này cũng bị xóa.
Tôi thành thật xin lỗi. BinhTam vui lòng post lại các file của em lên theo Topic này.

Xin cám ơn các bạn.

Lê Văn Duyệt
 
Theo tôi, nếu BinhTam chỉ muốn làm báo cáo như vậy và bạn có biết về Query, biết về export to excel. Nếu bạn muốn theo cách gia công.
1/ Query make table
2/ Export to excel, có thể 2 file: Data và Slsx (table)
3/ Mở file báo cáo, đưa 2 file trên vào.
4/ In báo cáo.
Nếu bạn OK như vậy tôi sẽ làm cho. Do tôi không rành lắm về ADO hay get ...
Xin gởi file cho BinhTam.
 

File đính kèm

  • BinhTam.rar
    46.5 KB · Đọc: 617
Lần chỉnh sửa cuối:
access-excel

Gui lại file đính kèm để các bạn tham khảo.

levanduyet đã viết:
To: BinhTam, và các thành viên khác,

Do vô ý tôi xóa bài đầu tiên của tôi trong thread (tôi post giúp BinhTam, nhưng sau đó BinhTam lại post tiếp ở thread thứ #2). Vì vậy topic này cũng bị xóa.
Tôi thành thật xin lỗi. BinhTam vui lòng post lại các file của em lên theo Topic này.

Xin cám ơn các bạn.

Lê Văn Duyệt
 

File đính kèm

  • Book1.zip
    38.8 KB · Đọc: 485
  • NPL.zip
    16.3 KB · Đọc: 345
access-excel

theo cách làm của bạn, khi mình thay đổi số lượng,dm,tlhh trong bảng access thì file báo cáo trong excel có được thay đổi theo hay ko?



ThuNghi đã viết:
Theo tôi, nếu BinhTam chỉ muốn làm báo cáo như vậy và bạn có biết về Query, biết về export to excel. Nếu bạn muốn theo cách gia công.
1/ Query make table
2/ Export to excel, có thể 2 file: Data và Slsx (table)
3/ Mở file báo cáo, đưa 2 file trên vào.
4/ In báo cáo.
Nếu bạn OK như vậy tôi sẽ làm cho. Do tôi không rành lắm về ADO hay get ...
Xin gởi file cho BinhTam.
 
BinhTam đã viết:
theo cách làm của bạn, khi mình thay đổi số lượng,dm,tlhh trong bảng access thì file báo cáo trong excel có được thay đổi theo hay ko?
Thì bạn làm lại các bước như trên. Còn không nghiên cứu về A Tools của anh Tuân. Tại sao không nhập trên Excel luôn.
 
access-excel

nhập liệu trên excel không tốt lắm, đôi khi mình phải dò tên NPL rồi nhập dm,tlhh nếu 1 style thì cố gắng cũng được đằng này quá nhiều style, mỗi lần nhập thấy nhức mắt.
Từ lúc tạo bảng trong access mình thấy nhập liệu rất thoải mái.

ThuNghi đã viết:
Thì bạn làm lại các bước như trên. Còn không nghiên cứu về A Tools của anh Tuân. Tại sao không nhập trên Excel luôn.
 
Web KT
Back
Top Bottom