• Import nhiều file Excel vào Table Access
  • 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 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
  • 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 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 
  • 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 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 
  • 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