hoabattu3387
Thành viên chính thức
- Tham gia
- 11/9/08
- Bài viết
- 91
- Được thích
- 2
Bạn chỉnh code sau và chạy thử nhé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à!
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 ạ.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"
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"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 đó.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 ạ.
Sai cú pháp nhé.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 ạ View attachment 183841
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
Túm lại bạn đã đưa dữ liệu vào được chưa?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 ạ.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
DoCmd.RunSavedImportExport "chi tiet gui bvl.xlsx"
IMPORT ĐƯỢC RỒI A Ạ, NHƯNG E CÓ THÊM YÊU CẦU MUỐN EXPORT QUERY "chi tiet gui bvl.xlsx" THÌ CÂU LỆNH TRÊN KHÔNG ĐC Ạ.Túm lại bạn đã đưa dữ liệu vào được chưa?
Câu lệnh
Mục đích của bạn làm gì?Mã:DoCmd.RunSavedImportExport "chi tiet gui bvl.xlsx"
View attachment 183858
Bạn có làm động tác trên khi Import dữ liệu không?
Câu lệnh trên đâu phải Export Query?IMPORT ĐƯỢC RỒI A Ạ, NHƯNG E CÓ THÊM YÊU CẦU MUỐN EXPORT QUERY "chi tiet gui bvl.xlsx" THÌ CÂU LỆNH TRÊN KHÔNG ĐC Ạ.
VẬY PHẢI LÀM THẾ NÀO HẢ A?Câu lệnh trên đâu phải Export Query?
Bạn thử như sau nhé.
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.Bạn thử như sau nhé.
Mã:DoCmd.OutputTo ObjectType:=acOutputQuery, ObjectName:="TenQueryCuaBan", OutputFormat:=acFormatXLSX
Import bình thường thì phải chịu thôi bạn, muốn theo ý phải dùng ADO.đượ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.
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")
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:Dim cn As Object
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")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
Bạn thử từng thủ tục xem nó lỗi ở dòng nào nhé.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:
View attachment 183942
Bạn thử từng thủ tục xem nó lỗi ở dòng nào nhé.
cn.Execute ("insert into BVL SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & tblename & "].[DetailOfCreditTotalTransaction$A6:Z100] Where MID is not null")
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?đến dòng này thì báo lỗi và thoát luôn access ạ.Mã:cn.Execute ("insert into BVL SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & tblename & "].[DetailOfCreditTotalTransaction$A6:Z100] Where MID is not null")
tiêu đề cột đúng a ạ, chạy qua dòngBạ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?
Set cn = CurrentProject.Connection