vuthaiha90 > 18-04-19, 04:20 PM
Private Sub cmdTongHop_Click()
Dim Ex As Object
Dim Wb As Object
Dim Ws As Object
Dim DuongDan As Recordset
Dim TongHop As Recordset
Dim i As Long, j As Long
Set DuongDan = CurrentDb.OpenRecordset("tblDuongDan", dbOpenTable)
Set TongHop = CurrentDb.OpenRecordset("tblTongHop", dbOpenTable)
If TongHop.RecordCount > 0 Then Call XoaTable("tblTongHop")
DuongDan.MoveFirst
Do Until DuongDan.EOF
Set Ex = CreateObject("Excel.Application")
Set Wb = Ex.Workbooks.Open(DuongDan.Fields(0))
Set Ws = Wb.Sheets("G035841")
For i = 19 To 833
TongHop.AddNew
TongHop.Fields(0) = Ws.Range("C3")
TongHop.Fields(1) = Ws.Range("H" & i)
TongHop.Fields(2) = Ws.Range("I" & i)
TongHop.Fields(3) = Ws.Range("B" & i)
TongHop.Fields(4) = Ws.Range("C" & i)
TongHop.Update
Next
Wb.Close
Set Ex = Nothing
DuongDan.MoveNext
Loop
MsgBox "Xong"
End Sub
Xuân Thanh > 18-04-19, 05:24 PM
duynamvnn1208 > 19-04-19, 04:45 PM
ongke0711 > 19-04-19, 08:53 PM
(19-04-19, 04:45 PM)duynamvnn1208 Đã viết: Bạn nên viết Code đưa Excel sang Table tạm thời. Sau đó dùng dữ liệu của bảng tạm này thao tác với Query sẽ nhanh hơn rất nhiều so với bạn dùng Open Workbook. Sau khi bạn lấy dữ liệu xong thì xóa bảng đó đi.
Mỗi một vòng lặp là một quy trình như trên. Không khó đâu mà
Xóa Table
If TableExists("tableName") Then
DoCmd.DeleteObject acTable, "tableName"
End If
Add Table
DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, "tableName", "filePath", True
duynamvnn1208 > 20-04-19, 10:10 PM
(19-04-19, 08:53 PM)ongke0711 Đã viết:(19-04-19, 04:45 PM)duynamvnn1208 Đã viết: Bạn nên viết Code đưa Excel sang Table tạm thời. Sau đó dùng dữ liệu của bảng tạm này thao tác với Query sẽ nhanh hơn rất nhiều so với bạn dùng Open Workbook. Sau khi bạn lấy dữ liệu xong thì xóa bảng đó đi.
Mỗi một vòng lặp là một quy trình như trên. Không khó đâu mà
Xóa Table
If TableExists("tableName") Then
DoCmd.DeleteObject acTable, "tableName"
End If
Add Table
DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, "tableName", "filePath", True
Đây cũng là một cách.
Dùng ADODB thì không cần mở file nguồn nhé.
ongke0711 > 20-04-19, 10:49 PM
(20-04-19, 10:10 PM)duynamvnn1208 Đã viết: đẩy qua ADODB không phải mở file nguồn nhưng bản chất vẫn là đẩy dữ liệu qua ADO.
Lợi điểm cách của mình là dùng luôn query trực tiếp chứ không phải thao tác với Recordset. Với một thanh niên ngại lắm mới dùng đến Code như mình thì dùng Query thích hơn
duynamvnn1208 > 23-04-19, 06:22 PM