Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Import nhiều file Excel vào Table Access
#21
(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 ạ
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#22
(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 LongAs LongAs 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 1 To nFile
        Set Ex 
= New Excel.Application
        Set Wb 
Ex.Workbooks.Open(S01.Range("B" i))
        Set Ws Wb.Worksheets("G011241")
        S02.Cells(2i) = S01.Range("A3")
        S02.Cells(21) = S01.Range("A4")
        S02.Cells(12) = Ws.Range("C3")
        j 2
        
For 19 To 833            
            
If 1 Then S02.Cells(11) = Ws.Range(("B" k))
            S02.Cells(12) = CDbl(Ws.Range("H" k))
            S02.Cells(11) = CDbl(Ws.Range("I" k))
            j 1
        Next       
        Wb
.Save
        Wb
.Close
        Set Ex 
Nothing
    Next
    S02
.Activate
    Range
(Cells(31), Cells(S02.Range("A10000").End(xlUp).RowS02.Range("CC3").End(xlToLeft).Column)).EntireColumn.NumberFormat "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
    Range(Cells(31), Cells(S02.Range("A10000").End(xlUp).RowS02.Range("CC3").End(xlToLeft).Column)).EntireColumn.AutoFit
    Application
.ScreenUpdating True
    MsgBox 
"Xong"
End Sub 


Thân mến
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn vuthaiha90
#23
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 LongAs 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 1 To nFile
       Set Ex 
= New Excel.Application
       Set Wb 
Ex.Workbooks.Open(S01.Range("C" i))
       Set Ws Wb.Worksheets("G034821")
       S02.Cells(8202) = Ws.Range("C3")
  
           Ws
.Range("D27:G27").Copy

           S02
.Cells(8212).PasteSpecial Transpose:=True

       Wb
.Save
       Wb
.Close
       Set Ex 
Nothing
   Next
   S02
.Activate
   Range
(Cells(31), Cells(S02.Range("A10000").End(xlUp).RowS02.Range("CC3").End(xlToLeft).Column)).EntireColumn.NumberFormat "_(* #,##0_);_(* (#,##0);_(* ""-""_);_(@_)"
   Range(Cells(31), Cells(S02.Range("A10000").End(xlUp).RowS02.Range("CC3").End(xlToLeft).Column)).EntireColumn.AutoFit
Application
.ScreenUpdating True
      
   MsgBox 
"Xong"
 
End Sub 
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#24
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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#25
(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
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#26
(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?
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#27
Mã PHP:
Sub TongHop2()
  Application.ScreenUpdating False
  Dim i 
As Long,  j As LongAs LongAs 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 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 
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn vuthaiha90 , thegioi2018
#28
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 ạ.
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#29
(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
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#30
(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
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Demo Import/Export Excel + Hàm Liệt tên ALL Access maidinhdan 68 8,341 28-06-18, 10:32 PM
Bài mới nhất: maidinhdan
  Chèn âm thanh vào file Access tt1212 8 1,982 21-05-18, 04:10 PM
Bài mới nhất: le thai hoa
  [Hỏi] Trích ngấu nhiên dữ liệu trong Table vuthaiha90 7 336 22-04-18, 12:43 PM
Bài mới nhất: vuthaiha90
  [Video]Tạo Thư mục chia sẽ file qua LAN và Internet maidinhdan 8 577 20-03-18, 11:37 PM
Bài mới nhất: maidinhdan
  [Help] Dùng Google Drive để lưu trữ database chung - dùng chung cho nhiều máy. vkaccess 1 244 20-03-18, 02:22 AM
Bài mới nhất: vkaccess

Chuyển nhanh:


User(s) browsing this thread: 2 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line