-
RE: Import nhiều file Excel vào Table Access
vuthaiha90 > 06-07-18, 04:01 PM
(06-07-18, 03:50 PM)Xuân Thanh Đã viết:
(06-07-18, 09:56 AM)vuthaiha90 Đã viết: Em đã lấy các file của 2 bác về chạy thử và đã chuyển về 2003 dùng, đã OK. Em cảm ơn ạ. Nhưng có 1 ý nữa, không biết các bác có thể giúp nốt em không ạ: chuyển dữ liệu đang từ dọc thành ngang được không ạ, vì số hiệu tài khoản là cố định, số dòng là cố định (833-19+1=815 dòng dữ liệu), thì cứ 815 dòng thì ngắt, nhảy sang cột mới (tức Mã KH mới), dạng nó kiểu kiểu như này ạ:
Số hiệu TK 34902075 34902076 34902077
Nợ Có Nợ Có Nợ Có
1
1011
13111
13121
......
899020
Làm trong Excel hay Access?
Dạ nếu bác làm được bên access thì hay, tại em thấy thích access. Còn không thì làm bên excel ạ -
RE: Import nhiều file Excel vào Table Access
Xuân Thanh > 07-07-18, 10:47 AM
(06-07-18, 04:01 PM)vuthaiha90 Đã viết: Dạ nếu bác làm được bên access thì hay, tại em thấy thích access. Còn không thì làm bên excel ạ
Nếu làm trong Excel thì sửa như sau
1/ Thêm trong Sheet Main
A1 = Mã Khách Hàng
A2 = Số Hiệu Tài Khoản
A3 = Nợ
A4= Có
Mục đích để đưa sang sheet Tong Hop cho lẹ
2/ Sửa lại đoạn code sau
Mã PHP:Sub TongHop()
Application.ScreenUpdating = False
Dim i As Long, j As Long, k As Long
Dim nFile As Long
nFile = S01.Range("B1000").End(xlUp).Row
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
S02.Cells.ClearContents
S02.Range("A1") = S01.Range("A1")
S02.Range("A2") = S01.Range("A2")
For i = 1 To nFile
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(S01.Range("B" & i))
Set Ws = Wb.Worksheets("G011241")
S02.Cells(2, 2 * i) = S01.Range("A3")
S02.Cells(2, 2 * i + 1) = S01.Range("A4")
S02.Cells(1, i * 2) = Ws.Range("C3")
j = 2
For k = 19 To 833
If i = 1 Then S02.Cells(j + 1, 1) = Ws.Range(("B" & k))
S02.Cells(j + 1, i * 2) = CDbl(Ws.Range("H" & k))
S02.Cells(j + 1, i * 2 + 1) = CDbl(Ws.Range("I" & k))
j = j + 1
Next
Wb.Save
Wb.Close
Set Ex = Nothing
Next
S02.Activate
Range(Cells(3, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Range(Cells(3, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.AutoFit
Application.ScreenUpdating = True
MsgBox "Xong"
End Sub
Thân mến -
RE: Import nhiều file Excel vào Table Access
vuthaiha90 > 09-07-18, 09:44 AM
Dạ, em lấy về và dùng thử chạy chuẩn rồi bác ạ, cho em hỏi thêm 1 ý nữa là nếu muốn tận dụng file này mà nhập 28 file khác với mã "G034821", dán dữ liệu dưới dữ liệu của "G011241" thì nên làm thế nào ạ, với dữ liệu lần này từ ngang chuyển thành cột dọc cho khớp với cột của G011241 kia ạ, em có tự sửa nhưng xảy ra 2 lỗi:
- 1, Chọn file G034821 thì trắng tinh dữ liệu G011241 đã dán ở trên
- 2, Em bị lỗi "pastespecial method of range class failed"
File G034821 của e đây ạ; còn dòng code em tự sửa thế này ạ:
Mã PHP:Sub ChonFile2()
Dim i As Long, j As Long
j = S01.Range("c1000000").End(xlUp).Row
S01.Range("c1:c" & j).ClearContents
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.Show
For i = 1 To .SelectedItems.Count
S01.Range("c" & i) = .SelectedItems(i)
Next
End With
End Sub
Sub TongHop2()
Application.ScreenUpdating = False
Dim i As Long
Dim nFile As Long
nFile = S01.Range("c1000").End(xlUp).Row
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
S02.Cells.ClearContents
For i = 1 To nFile
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(S01.Range("C" & i))
Set Ws = Wb.Worksheets("G034821")
S02.Cells(820, i * 2) = Ws.Range("C3")
Ws.Range("D27:G27").Copy
S02.Cells(821, i * 2).PasteSpecial Transpose:=True
Wb.Save
Wb.Close
Set Ex = Nothing
Next
S02.Activate
Range(Cells(3, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Range(Cells(3, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.AutoFit
Application.ScreenUpdating = True
MsgBox "Xong"
End Sub -
RE: Import nhiều file Excel vào Table Access
Xuân Thanh > 09-07-18, 11:42 AM
1/ Sub ChonFile Đúng
2/ G011241 chỉ có 2 cột Nợ và Có, trong khi G034821 có 4 cột làm sao cho khớp? Muốn chuẩn thì phải sửa lại cả TongHop và TongHop2. Hoặc là tạo sẵn 4 cột từ TongHop hoặc Insert thêm 2 cột từ TongHop2 rồi chép dữ liệu qua
3/ File đóng nên không thể dùng lệnh Copy và Past được
4/ Tạo thêm một nút bấm để chọn file 2 và một nút bấm để tổng hợp 2 -
RE: Import nhiều file Excel vào Table Access
vuthaiha90 > 09-07-18, 11:59 AM
(09-07-18, 11:42 AM)Xuân Thanh Đã viết: 1/ Sub ChonFile Đúng
2/ G011241 chỉ có 2 cột Nợ và Có, trong khi G034821 có 4 cột làm sao cho khớp? Muốn chuẩn thì phải sửa lại cả TongHop và TongHop2. Hoặc là tạo sẵn 4 cột từ TongHop hoặc Insert thêm 2 cột từ TongHop2 rồi chép dữ liệu qua
3/ File đóng nên không thể dùng lệnh Copy và Past được
4/ Tạo thêm một nút bấm để chọn file 2 và một nút bấm để tổng hợp 2
2/ vì G034821 có 4 cột mà mỗi 1 dòng cần lấy dữ liệu (ngày cuối cùng của kỳ báo cáo, cũng chính là dòng cuối cùng, nhưng số dòng là không cố định, vì có ông làm việc 5 ngày rồi nghỉ, có ông làm 6 ngày mới nghỉ; em làm trên kia đúng là quên cả cái điều kiện này, cứ lấy cố định D27:G27 sẽ có nhiều lúc sai), nên e mới định paste đặc biệt xoay ngang thành dọc, thành 1 cột, rồi cứ i = i*2 mà paste.
3/ sao mình copy paste bằng tay thì được mà vba lại không với file này bác nhỉ
4/ vâng, em có tạo thêm 2 nút là chọn file 2 và tổng hợp 2 mà bác -
RE: Import nhiều file Excel vào Table Access
Xuân Thanh > 09-07-18, 12:10 PM
(09-07-18, 11:59 AM)vuthaiha90 Đã viết: 2/ vì G034821 có 4 cột mà mỗi 1 dòng cần lấy dữ liệu (ngày cuối cùng của kỳ báo cáo, cũng chính là dòng cuối cùng, nhưng số dòng là không cố định, vì có ông làm việc 5 ngày rồi nghỉ, có ông làm 6 ngày mới nghỉ; em làm trên kia đúng là quên cả cái điều kiện này, cứ lấy cố định D27:G27 sẽ có nhiều lúc sai), nên e mới định paste đặc biệt xoay ngang thành dọc, thành 1 cột, rồi cứ i = i*2 mà paste.
3/ sao mình copy paste bằng tay thì được mà vba lại không với file này bác nhỉ
4/ vâng, em có tạo thêm 2 nút là chọn file 2 và tổng hợp 2 mà bác
1/ Mở file G034821 mà copy rồi past thì quá ok. Nhưng trong lệnh vba ta đang mở file dạng đóng tức mở ngầm file chư không để file active. vì vậy khong thể copy và past được
2/ Hiểu ý rồi. Tức là dòng cuối cùng chuyển thành dọc đúng không? -
RE: Import nhiều file Excel vào Table Access
Xuân Thanh > 09-07-18, 12:26 PM
Mã PHP:Sub TongHop2()
Application.ScreenUpdating = False
Dim i As Long, j As Long, k As Long, m As Long
Dim nFile As Long
nFile = S01.Range("c1000").End(xlUp).Row
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
j = S02.Range("C1000000").End(xlUp).Row
For i = 1 To nFile
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(S01.Range("C" & i))
Set Ws = Wb.Worksheets("G034821")
'S02.Cells(820, i * 2) = Ws.Range("C3") Bo cau nay vi co roi
m = Ws.Range("D1000000").End(xlUp).Row
For k = 1 To 4
S02.Cells(j+k, i * 2 - 1) = CDbl(Ws.Cells(m, k + 3))
Next
Wb.Save
Wb.Close
Set Ex = Nothing
Next
S02.Activate
Range(Cells(J + 1, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.NumberFormat = "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
Range(Cells(j + 1, 1), Cells(S02.Range("A10000").End(xlUp).Row, S02.Range("CC3").End(xlToLeft).Column)).EntireColumn.AutoFit
Application.ScreenUpdating = True
MsgBox "Xong"
End Sub -
RE: Import nhiều file Excel vào Table Access
vuthaiha90 > 12-07-18, 04:33 PM
Bác ơi, cho em lục lại topic này tý ạ. Chả là em dùng file này OK rồi (tuy cũng có ngồi chờ 1 tý), mà phòng em 4 người, mỗi người cũng làm công việc như vậy, em là người Tổng hợp kết quả cuối cùng, nên đằng nào cũng thế, em dùng luôn file này làm cho cả phòng. Nhưng khi dữ liệu cả phòng lên tới tầm 100 Mã KH thì cái G011241 kia Paste số liệu sang S02 khá lâu (cái này thì em hiểu vì nó nhiều dòng, nhiều cột, em chờ được), nhưng mà nó hay mở tự động 1 vài file bất kỳ trong 100 file G01124 kia lên lắm ạ + trong My document cũng xuất hiện file, mặc dù em không Copy vào đấy, folder chứa số liệu toàn để màn hình cho thuận tiện;
- với mỗi lần như Paste xong như vậy thì trong Folder chứa G01124 kia hiện lên 1 loạt file dạng như kiểu khi ta đang đọc file ấy rồi nhìn lại folder có 1 file mờ mờ hiển thị là bạn đang mở ý ạ; mặc dù việc copy paste diễn ra đã xong và trong code em thấy có Ws.Close mà sao vẫn bị vậy nhỉ.
+ Cái thứ 2 là khi xong G01124, em chuyển sang paste G03482, thì là chạy 1 phần xong đơ hoặc hiển thị "ActiveX component can't create object"; thế là em kill app đi và restart lại máy thì những file mờ mờ kia cũng mất và bấm lại tiếp Paste G03482 thì lại diễn ra bình thường (đường dẫn file vẫn còn đó, không phải chọn lại).
==>Cho em hỏi có phải do máy cơ quan em cấu hình thấp nên vậy, hay Excel chỉ làm được vài file, còn nhiều sẽ bị vậy ạ. -
RE: Import nhiều file Excel vào Table Access
Xuân Thanh > 14-07-18, 09:50 AM
(12-07-18, 04:33 PM)vuthaiha90 Đã viết: Bác ơi, cho em lục lại topic này tý ạ. Chả là em dùng file này OK rồi (tuy cũng có ngồi chờ 1 tý), mà phòng em 4 người, mỗi người cũng làm công việc như vậy, em là người Tổng hợp kết quả cuối cùng, nên đằng nào cũng thế, em dùng luôn file này làm cho cả phòng. Nhưng khi dữ liệu cả phòng lên tới tầm 100 Mã KH thì cái G011241 kia Paste số liệu sang S02 khá lâu (cái này thì em hiểu vì nó nhiều dòng, nhiều cột, em chờ được), nhưng mà nó hay mở tự động 1 vài file bất kỳ trong 100 file G01124 kia lên lắm ạ + trong My document cũng xuất hiện file, mặc dù em không Copy vào đấy, folder chứa số liệu toàn để màn hình cho thuận tiện;
- với mỗi lần như Paste xong như vậy thì trong Folder chứa G01124 kia hiện lên 1 loạt file dạng như kiểu khi ta đang đọc file ấy rồi nhìn lại folder có 1 file mờ mờ hiển thị là bạn đang mở ý ạ; mặc dù việc copy paste diễn ra đã xong và trong code em thấy có Ws.Close mà sao vẫn bị vậy nhỉ.
+ Cái thứ 2 là khi xong G01124, em chuyển sang paste G03482, thì là chạy 1 phần xong đơ hoặc hiển thị "ActiveX component can't create object"; thế là em kill app đi và restart lại máy thì những file mờ mờ kia cũng mất và bấm lại tiếp Paste G03482 thì lại diễn ra bình thường (đường dẫn file vẫn còn đó, không phải chọn lại).
==>Cho em hỏi có phải do máy cơ quan em cấu hình thấp nên vậy, hay Excel chỉ làm được vài file, còn nhiều sẽ bị vậy ạ.
Đúng là bostay.com. Bạn nói có 28 file sao giờ tới cả trăm? Lọc cỡ dó không đứng máy mới là chuyện lạ
Lời khuyên : Không nên để file ngoài Desktop sẽ làm chậm việc truy xuất số liệu.về lâu dài sẽ ảnh hưởng tới hệ điều hành -
RE: Import nhiều file Excel vào Table Access
vuthaiha90 > 14-07-18, 02:37 PM
(14-07-18, 09:50 AM)Xuân Thanh Đã viết:
(12-07-18, 04:33 PM)vuthaiha90 Đã viết: Bác ơi, cho em lục lại topic này tý ạ. Chả là em dùng file này OK rồi (tuy cũng có ngồi chờ 1 tý), mà phòng em 4 người, mỗi người cũng làm công việc như vậy, em là người Tổng hợp kết quả cuối cùng, nên đằng nào cũng thế, em dùng luôn file này làm cho cả phòng. Nhưng khi dữ liệu cả phòng lên tới tầm 100 Mã KH thì cái G011241 kia Paste số liệu sang S02 khá lâu (cái này thì em hiểu vì nó nhiều dòng, nhiều cột, em chờ được), nhưng mà nó hay mở tự động 1 vài file bất kỳ trong 100 file G01124 kia lên lắm ạ + trong My document cũng xuất hiện file, mặc dù em không Copy vào đấy, folder chứa số liệu toàn để màn hình cho thuận tiện;
- với mỗi lần như Paste xong như vậy thì trong Folder chứa G01124 kia hiện lên 1 loạt file dạng như kiểu khi ta đang đọc file ấy rồi nhìn lại folder có 1 file mờ mờ hiển thị là bạn đang mở ý ạ; mặc dù việc copy paste diễn ra đã xong và trong code em thấy có Ws.Close mà sao vẫn bị vậy nhỉ.
+ Cái thứ 2 là khi xong G01124, em chuyển sang paste G03482, thì là chạy 1 phần xong đơ hoặc hiển thị "ActiveX component can't create object"; thế là em kill app đi và restart lại máy thì những file mờ mờ kia cũng mất và bấm lại tiếp Paste G03482 thì lại diễn ra bình thường (đường dẫn file vẫn còn đó, không phải chọn lại).
==>Cho em hỏi có phải do máy cơ quan em cấu hình thấp nên vậy, hay Excel chỉ làm được vài file, còn nhiều sẽ bị vậy ạ.
Đúng là bostay.com. Bạn nói có 28 file sao giờ tới cả trăm? Lọc cỡ dó không đứng máy mới là chuyện lạ
Lời khuyên : Không nên để file ngoài Desktop sẽ làm chậm việc truy xuất số liệu.về lâu dài sẽ ảnh hưởng tới hệ điều hành
À dạ, em cũng giải thích ở trên rồi mà, mỗi người quản lý tầm 28-30 khách hàng, công việc như nhau, đến đầu tháng thì em là người tổng hợp số liệu tổng của 100 khách (như những tháng trước thì xin của 3 người gộp lại), em nghĩ dùng sang cái này nhanh hơn nên định làm hộ luôn, vậy lại như tháng trước cũng tổng hợp của 3 người lại vậy.
- vâng, vậy thì em để file excel này với những mẫu cần lấy dữ liệu kia hàng tháng cho vào ổ D để làm