tự động cập nhật excel vào access

Liên hệ QC

hoabattu3387

Thành viên chính thức
Tham gia
11/9/08
Bài viết
91
Được thích
2
Mình có 1 file access lấy dữ liệu từ file excel vào bảng BVL để tạo ra 2 report BVL và VTB, file excel thay đổi theo ngày (cả nội dung lẫn tên file). Nhờ các bạn viết code giúp mình trên access để tự động lấy dữ liệu từ file excel.
Mình cảm ơn cả nhà!
 

File đính kèm

  • New folder.rar
    59.2 KB · Đọc: 14
Mình có 1 file access lấy dữ liệu từ file excel vào bảng BVL để tạo ra 2 report BVL và VTB, file excel thay đổi theo ngày (cả nội dung lẫn tên file). Nhờ các bạn viết code giúp mình trên access để tự động lấy dữ liệu từ file excel.
Mình cảm ơn cả nhà!
Bạn chỉnh code sau và chạy thử nhé

Mã:
On Error Resume Next
DoCmd.DeleteObject acTable, "BVL"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "BVL", "DuongDanDenFile", True, "DetailOfCreditTotalTransaction!A6:Z17"
 
Upvote 0
Bạn chỉnh code sau và chạy thử nhé

Mã:
On Error Resume Next
DoCmd.DeleteObject acTable, "BVL"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "BVL", "DuongDanDenFile", True, "DetailOfCreditTotalTransaction!A6:Z17"
Anh ơi, lệnh DoCmd.DeleteObject sẽ bị xóa cả bảng "BVL", nên lệnh DoCmd.TransferSpreadsheet không tìm thấy bảng "BVL" để import ạ.
 
Upvote 0
Anh ơi, lệnh DoCmd.DeleteObject sẽ bị xóa cả bảng "BVL", nên lệnh DoCmd.TransferSpreadsheet không tìm thấy bảng "BVL" để import ạ.
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "\\10.33.132.218\ktts\Doi soat\12. POS-BVL\THANG 09.17\28.09\28.09.xlsx", True, "DetailOfCreditTotalTransaction!A6:Z19"
e chạy riêng lệnh này vẫn báo lỗi ạ upload_2017-9-28_11-6-51.png
 
Upvote 0
Anh ơi, lệnh DoCmd.DeleteObject sẽ bị xóa cả bảng "BVL", nên lệnh DoCmd.TransferSpreadsheet không tìm thấy bảng "BVL" để import ạ.
Nó sẽ xóa bảng BVL cũ và thay thế bằng bảng BVL mới chứ làm gì có chuyện báo lỗi không tìm thấy bảng BVL để import? Có chăng là không tìm thấy BVL để xóa thôi, cho nên tôi mới có dòng On error resume next đó.
 
Upvote 0
Upvote 0
Mã:
Sub importfile()
Dim tblefilename, tblename As String
tblefilename = Access.CurrentProject.Path
tblename = tblefilename & "\28.09.xlsx"
DoCmd.DeleteObject acTable, "BVL"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "BVL", tblename, True, "DetailOfCreditTotalTransaction!A6:Z19"
DoCmd.RunSavedImportExport "chi tiet gui bvl.xlsx"
End Sub
anh kiểm tra giúp em dòng code (DoCmd.RunSavedImportExport "chi tiet gui bvl.xlsx"), e muốn export bảng "chi tiet gui bvl" mà báo lỗi, e ko hiểu ạ.
 
Upvote 0
Mã:
Sub importfile()
Dim tblefilename, tblename As String
tblefilename = Access.CurrentProject.Path
tblename = tblefilename & "\28.09.xlsx"
DoCmd.DeleteObject acTable, "BVL"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "BVL", tblename, True, "DetailOfCreditTotalTransaction!A6:Z19"
DoCmd.RunSavedImportExport "chi tiet gui bvl.xlsx"
End Sub
anh kiểm tra giúp em dòng code (DoCmd.RunSavedImportExport "chi tiet gui bvl.xlsx"), e muốn export bảng "chi tiet gui bvl" mà báo lỗi, e ko hiểu ạ.
Túm lại bạn đã đưa dữ liệu vào được chưa?
Câu lệnh
Mã:
DoCmd.RunSavedImportExport "chi tiet gui bvl.xlsx"
Mục đích của bạn làm gì?
upload_2017-9-28_15-1-35.png
Bạn có làm động tác trên khi Import dữ liệu không?
 
Upvote 0
Upvote 0
Upvote 0
Bạn thử như sau nhé.
Mã:
DoCmd.OutputTo ObjectType:=acOutputQuery, ObjectName:="TenQueryCuaBan", OutputFormat:=acFormatXLSX
được rồi anh ạ, chỗ import vào bảng "BVL" ý anh, vì mỗi ngày 1 file dữ liệu khác nhau, nếu em muốn chọn đến dòng có dữ liệu (trừ dòng tổng cộng cuối cùng) thì có cách nào không anh, vì khi e tăng số dòng lên cao để đảm bảo dữ liệu luôn import vào hết thì lại bị dòng tổng cộng dính vào.
 
Upvote 0
được rồi anh ạ, chỗ import vào bảng "BVL" ý anh, vì mỗi ngày 1 file dữ liệu khác nhau, nếu em muốn chọn đến dòng có dữ liệu (trừ dòng tổng cộng cuối cùng) thì có cách nào không anh, vì khi e tăng số dòng lên cao để đảm bảo dữ liệu luôn import vào hết thì lại bị dòng tổng cộng dính vào.
Import bình thường thì phải chịu thôi bạn, muốn theo ý phải dùng ADO.

Bạn thử code sau nhé:
Mã:
Dim cn As Object
Dim SourcePath As String
Set cn = CreateObject("ADODB.Connection")
SourcePath = "DuongDanDenFile\DetailOfCreditTotalTransaction_20170926_105939.xlsx"
Set cn = CurrentProject.Connection
cn.Execute ("insert into BVL SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & SourcePath & "].[DetailOfCreditTotalTransaction$A6:Z100] Where MID is not null")
Code này sẽ ghi nối xuống dưới bảng BVL, Nếu muốn bỏ cái cũ thì dùng code xóa nó đi trước khi chạy code trên.
 
Upvote 0
Dim cn As Object
Mã:
Sub importfile()
On Error Resume Next
Dim tblefilename, tblename As String
tblefilename = Access.CurrentProject.Path
FName = "\29.09.XLSX"
tblename = tblefilename & FName
DoCmd.DeleteObject acTable, "BVL"
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
Set cn = CurrentProject.Connection
cn.Execute ("insert into BVL SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & tblename & "].[DetailOfCreditTotalTransaction$A6:Z100] Where MID is not null")
DoCmd.OutputTo ObjectType:=acOutputQuery, ObjectName:="chi tiet gui bvl", OutputFormat:=acFormatXLSX, Outputfile:=tblefilename & "\chi tiet gui bvl.xlsx"
DoCmd.OutputTo ObjectType:=acOutputReport, ObjectName:="BVL", OutputFormat:=acFormatPDF, Outputfile:=tblefilename & "\BVL.pdf"
DoCmd.OutputTo ObjectType:=acOutputReport, ObjectName:="VTB", OutputFormat:=acFormatPDF, Outputfile:=tblefilename & "\VTB.pdf"
End Sub
SourcePath As String Set cn = CreateObject("ADODB.Connection") SourcePath = "DuongDanDenFile\DetailOfCreditTotalTransaction_20170926_105939.xlsx" Set cn = CurrentProject.Connection cn.Execute ("insert into BVL SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & SourcePath & "].[DetailOfCreditTotalTransaction$A6:Z100] Where MID is not null")
e sửa thế này nhưng vẫn bị báo lỗi, và thoát luôn access ạ, a xem giúp em sai chỗ nào với: upload_2017-9-29_14-28-49.png
 
Upvote 0
Upvote 0
Mã:
cn.Execute ("insert into BVL SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & tblename & "].[DetailOfCreditTotalTransaction$A6:Z100] Where MID is not null")
đến dòng này thì báo lỗi và thoát luôn access ạ.
Bạn kiểm tra lại tiêu đề cột coi có đúng với tiêu đề cột trong bảng BVL không nhé. Mà trước khi báo lỗi hình trên nó có thông báo lỗi gì không bạn?
 
Upvote 0
Bạn kiểm tra lại tiêu đề cột coi có đúng với tiêu đề cột trong bảng BVL không nhé. Mà trước khi báo lỗi hình trên nó có thông báo lỗi gì không bạn?
tiêu đề cột đúng a ạ, chạy qua dòng
Mã:
Set cn = CurrentProject.Connection
thì báo lôĩ và thoát luôn access.
cái chỗ "insert in to BVL..." liệu nó có hiểu insert vào bảng BVL ko anh?
 
Upvote 0
Web KT

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

Back
Top Bottom