Cập nhật dữ liệu Access từ dữ liệu nguồn trong Excel

Liên hệ QC

subasatran

Thành viên hoạt động
Tham gia
17/3/13
Bài viết
114
Được thích
6
Xin chào mọi người.
Hằng ngày, hệ thống phần mềm công ty xuất ra dữ liệu bằng file excel theo mẫu và tên file cũng thay đổi theo ngày. Công việc của mình là tổng hợp các file này để import lại trong access để xử lý và chạy báo cáo nên rất mất thời gian. Nên rất mong mọi người chỉ giúp về code VBA để có thể truy xuất dữ liệu trong access từ file excel và vẫn giữ nguyên định dạng như file excel.
Ví dụ như các file đính kèm
Hàng ngày hệ thống chạy ra 2 file(Data Source_info và Detail_Source) theo mẫu đính kèm. Mình có 1 file Access(Data_Daily) để tổng hợp data từ 2 file source này.
Trong file Access mình có một form bao gồm 2 Button để get data từ 2 file excel. Mình muốn nhờ mọi người chỉ giúp đoạn code VBA mà thực hiện được cái yêu cầu như bên dưới.
Khi mình nhấn nút button Update_Information thì sẽ:
1. Xóa hết toàn bộ dữ liệu bảng(table) List_Information
2. Sẽ truy xuất vào file excel Data Source_info sau đó copy(Copy theo định dạng format của file excel) dữ liệu từ A7 đến cột AC(đến dòng cuối cùng) sau đó sẽ update dữ liệu vừa copy này vào bảng(table) List_Information
Tương tự khi mình nhấn nút Update_List_detail thì cũng sẽ thực hiện 2 thao tác tương tự ở trên với bảng List_Detail.
Rất mong mọi người giúp đỡ.
 

File đính kèm

Xin chào mọi người.
Hằng ngày, hệ thống phần mềm công ty xuất ra dữ liệu bằng file excel theo mẫu và tên file cũng thay đổi theo ngày. Công việc của mình là tổng hợp các file này để import lại trong access để xử lý và chạy báo cáo nên rất mất thời gian. Nên rất mong mọi người chỉ giúp về code VBA để có thể truy xuất dữ liệu trong access từ file excel và vẫn giữ nguyên định dạng như file excel.
Ví dụ như các file đính kèm
Hàng ngày hệ thống chạy ra 2 file(Data Source_info và Detail_Source) theo mẫu đính kèm. Mình có 1 file Access(Data_Daily) để tổng hợp data từ 2 file source này.
Trong file Access mình có một form bao gồm 2 Button để get data từ 2 file excel. Mình muốn nhờ mọi người chỉ giúp đoạn code VBA mà thực hiện được cái yêu cầu như bên dưới.
Khi mình nhấn nút button Update_Information thì sẽ:
1. Xóa hết toàn bộ dữ liệu bảng(table) List_Information
2. Sẽ truy xuất vào file excel Data Source_info sau đó copy(Copy theo định dạng format của file excel) dữ liệu từ A7 đến cột AC(đến dòng cuối cùng) sau đó sẽ update dữ liệu vừa copy này vào bảng(table) List_Information
Tương tự khi mình nhấn nút Update_List_detail thì cũng sẽ thực hiện 2 thao tác tương tự ở trên với bảng List_Detail.
Rất mong mọi người giúp đỡ.

Nếu tên 2 file excel cố định không thay đổi thì dùng chức năng links table rồi sau đó tạo những querry xóa dữ liệu cũ, append dữ liệu mới như mình muốn, dùng button để chạy những querry đó là sẽ được thôi, công ty mình cũng chạy trên SQL nên links table sau đó xử lý tùy thích
 
Upvote 0
Nếu tên 2 file excel cố định không thay đổi thì dùng chức năng links table rồi sau đó tạo những querry xóa dữ liệu cũ, append dữ liệu mới như mình muốn, dùng button để chạy những querry đó là sẽ được thôi, công ty mình cũng chạy trên SQL nên links table sau đó xử lý tùy thích
Hi saobekhonglac,
Do tên file sẽ thay đổi mỗi ngày nên dùng linktable không được.
Thêm nữa, format dữ liệu từ hệ thống xuất ra không như một table(có nghĩa là dòng đầu tiên không phải là header) nên linktable không được.
Vì vậy mình mới nhờ mọi người giúp để kết nối từ access đến Excel theo một range tự chon trong excel
 
Upvote 0
Có anh/chị nào giúp mình với.
Hoặc có thể tư vấn giải pháp giúp mình với. cám ơn rất nhiều
 
Upvote 0
Xin chào mọi người.
Hằng ngày, hệ thống phần mềm công ty xuất ra dữ liệu bằng file excel theo mẫu và tên file cũng thay đổi theo ngày. Công việc của mình là tổng hợp các file này để import lại trong access để xử lý và chạy báo cáo nên rất mất thời gian. Nên rất mong mọi người chỉ giúp về code VBA để có thể truy xuất dữ liệu trong access từ file excel và vẫn giữ nguyên định dạng như file excel.
Ví dụ như các file đính kèm
Hàng ngày hệ thống chạy ra 2 file(Data Source_info và Detail_Source) theo mẫu đính kèm. Mình có 1 file Access(Data_Daily) để tổng hợp data từ 2 file source này.
Trong file Access mình có một form bao gồm 2 Button để get data từ 2 file excel. Mình muốn nhờ mọi người chỉ giúp đoạn code VBA mà thực hiện được cái yêu cầu như bên dưới.
Khi mình nhấn nút button Update_Information thì sẽ:
1. Xóa hết toàn bộ dữ liệu bảng(table) List_Information
2. Sẽ truy xuất vào file excel Data Source_info sau đó copy(Copy theo định dạng format của file excel) dữ liệu từ A7 đến cột AC(đến dòng cuối cùng) sau đó sẽ update dữ liệu vừa copy này vào bảng(table) List_Information
Tương tự khi mình nhấn nút Update_List_detail thì cũng sẽ thực hiện 2 thao tác tương tự ở trên với bảng List_Detail.
Rất mong mọi người giúp đỡ.
Tôi làm cho bạn câu 1, còn câu 2 bạn dựa vào đó mà làm nhé.

Mã:
Private Sub cmdAgent_Click()
    DoCmd.RunSQL ("DELETE * FROM List_Information")
    DoCmd.RunSQL "INSERT INTO List_Information " & _
                 "SELECT F1 AS [AGENT CODE],F2 AS [AGENT NAME], " & _
                        "F3 AS [APPOINTED DATE],F4 AS [APPOINTMENT TRANSACTION DATE], " & _
                        "F5 AS [AGENT STATUS],F6 AS [BLACK LIST STATUS], " & _
                        "F7 AS [TERMINATED DATE],F8 AS [LICENCE NO], " & _
                        "F9 AS [AGENT1 CODE],F10 AS [AGENT1 NAME], " & _
                        "F11 AS [AGENT NUMBER],F12 AS [AGENT2 NAME], " & _
                        "F13 AS [REGION CODE],F14 AS [REGION LEADER CODE], " & _
                        "F15 AS [REGION LEADER NAME],F16 AS [REGION LEADER COMMISSION CLASS], " & _
                        "F17 AS [ID NUMBER],F18 AS [ID ISSUED DATE], " & _
                        "F19 AS [ID ISSUED PLACE],F20 AS [DATE OF BIRTH], " & _
                        "F21 AS [GENDER],F22 AS [BANK ACCOUNT CODE], " & _
                        "F23 AS [BRANCH CODE],F24 AS [BRANCH NAME], " & _
                        "F25 AS [BANK CODE],F26 AS [TELEPHONE_HOME], " & _
                        "F27 AS [HAND PHONE],F28 AS [OFFICE PHONE], " & _
                        "F29 AS [CLASSIFY] " & _
                 "FROM [EXCEL 12.0;HDR=NO;Database=" & CurrentProject.Path & "\Data Source_info.xlsx].[SHEET1$A7:AC] "
    MsgBox ("Done!!!")
End Sub
 
Upvote 0
Tôi làm cho bạn câu 1, còn câu 2 bạn dựa vào đó mà làm nhé.

Mã:
Private Sub cmdAgent_Click()
    DoCmd.RunSQL ("DELETE * FROM List_Information")
    DoCmd.RunSQL "INSERT INTO List_Information " & _
                 "SELECT F1 AS [AGENT CODE],F2 AS [AGENT NAME], " & _
                        "F3 AS [APPOINTED DATE],F4 AS [APPOINTMENT TRANSACTION DATE], " & _
                        "F5 AS [AGENT STATUS],F6 AS [BLACK LIST STATUS], " & _
                        "F7 AS [TERMINATED DATE],F8 AS [LICENCE NO], " & _
                        "F9 AS [AGENT1 CODE],F10 AS [AGENT1 NAME], " & _
                        "F11 AS [AGENT NUMBER],F12 AS [AGENT2 NAME], " & _
                        "F13 AS [REGION CODE],F14 AS [REGION LEADER CODE], " & _
                        "F15 AS [REGION LEADER NAME],F16 AS [REGION LEADER COMMISSION CLASS], " & _
                        "F17 AS [ID NUMBER],F18 AS [ID ISSUED DATE], " & _
                        "F19 AS [ID ISSUED PLACE],F20 AS [DATE OF BIRTH], " & _
                        "F21 AS [GENDER],F22 AS [BANK ACCOUNT CODE], " & _
                        "F23 AS [BRANCH CODE],F24 AS [BRANCH NAME], " & _
                        "F25 AS [BANK CODE],F26 AS [TELEPHONE_HOME], " & _
                        "F27 AS [HAND PHONE],F28 AS [OFFICE PHONE], " & _
                        "F29 AS [CLASSIFY] " & _
                 "FROM [EXCEL 12.0;HDR=NO;Database=" & CurrentProject.Path & "\Data Source_info.xlsx].[SHEET1$A7:AC] "
    MsgBox ("Done!!!")
End Sub
Rất cảm ơn sự giúp đỡ của anh Hai Lúa Miền Tây.
Anh cho em hỏi thêm một chút về định dạng khi chạy query trên.
Giả sử em có field AGENT CODE ở định dạng vừa là số(number) vừa là chữ(text) thì khi chạy query trên các record là text không được insert vào table access. Cám ơn anh rất nhiều
 
Upvote 0
Rất cảm ơn sự giúp đỡ của anh Hai Lúa Miền Tây.
Anh cho em hỏi thêm một chút về định dạng khi chạy query trên.
Giả sử em có field AGENT CODE ở định dạng vừa là số(number) vừa là chữ(text) thì khi chạy query trên các record là text không được insert vào table access. Cám ơn anh rất nhiều
Bạn làm 3 bước sau:
1. Vào Access mở table ở dạng Design, điều chỉnh kiểu dữ lieu field đó từ number sang Text. Đóng và lưu lại
2. Mở file Excel, format cột đó về dạng text, thoát và lưu lại.
3. Chạy query để xem kết quả.
 
Upvote 0
Bạn làm 3 bước sau:
1. Vào Access mở table ở dạng Design, điều chỉnh kiểu dữ lieu field đó từ number sang Text. Đóng và lưu lại
2. Mở file Excel, format cột đó về dạng text, thoát và lưu lại.
3. Chạy query để xem kết quả.
Hi anh Hai Lua Mien Tay,
Cám ơn anh nhiều.
Vì dữ liệu em cần tổng hợp chạy ra từ hệ thống nên việc format file excel về lại dạng text rồi chạy query cũng không tối ưu cho lắm.
Em định làm một function nhỏ để convert lại các field này cho tự động khỏi phải format trong file nguồn excel.
Nhũng khổ nổi hình như có lẽ hàm chưa đúng nên vẫn không đạt được kết quả mong muốn.
Anh giúp em chỉnh lại cái function này với ạ. Cám ơn anh rất nhiều.
Mã:
Public Function ConvertNumberToText(ByVal txtnumber As Double) As String
If IsNumeric(CStr(txtnumber)) = True Then
    ConvertNumberToText = Format(CStr(txtnumber), "00000000")
Else
    ConvertNumberToText = CStr(txtnumber)
End If
End Function
Với function trên thì những record có định dạng là text lại không append được vào table Access. Chỉ những record nào đang định dạng là number thôi
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom