Copy dữ liệu vào file đống (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hungdiep85

Thành viên thường trực
Tham gia
1/6/09
Bài viết
218
Được thích
23
Giới tính
Nam
Chào các Anh Chị và Thầy Cô Trên GPE

Code trong file là em sưu tầm về, giờ gặp chút vấn đề.

File A là file nguồn, em muốn lấy dữ liệu từ file A qua file B,C,D

nhưng giờ file B,C,D ở 1 folder khác, giờ em phải sửa code như thế nào?

ah và khi chạy code có thể sửa luôn tên file B,C,D thành tên file B,C,D (21-JAN-16), Sủa theo ô H1 là ngày cập nhập dữ liệu

Em cảm ơn trước à
 

File đính kèm

Lần chỉnh sửa cuối:
...
Mà bây giờ đổi tên...Lần sau bạn cần chạy code thì tên đã đổi khác so với trong code của bạn... => Code làm sao mà chạy được nữa???
...

Dùng Const để chứa cái mình muốn. Và sửa trong vòng vài giây. Vụ này tôi làm hoài, chả sao cả.

- Đặt thêm một module CONSTANTS
- Chép dòng này vào module trên
Public Const NUPATH = "C:\new folder" ' folder của file đích, nếu cùng folder với file gốc thì ghi là ""
- Nhấn Ctrl+h (Find/Replace), chọn current project
Find what -> ThisWorkbook.Path &
Replace with -> IIf(NUPATH <> "", NUPATH, ThisWorkbook.Path) &
Bấm Replace all

Từ đó về sau, nếu cần thay đổi path thì chỉ việc vào module CONSTANTS sửa chỗ ấy.

Tại các bạn quen viết code theo kiểu ghi thẳng trong code (tiếng trong nghề gọi là magic numbers) cho nên chưa quen kiểu này thôi.

Chú thích:
Đây là tôi nói theo kiểu tổng quát. Chứ code bài này viết hãi bỏ bố. Người viết code chuyên nghiệp có thể viết 1 hàm với tham số (hoặc test caller), thay luôn cả 6 cái hàm.
 
Upvote 0
:(. Tôi thấy file của bạn có số lần tải về là 0.
 
Upvote 0
Buồn buồn ngồi viết 1 cái xem...thế nào! Chắc không cần phải sửa code...mà căn cứ vào tên File đặt sao cho giống mã hàng tại cột B...

Mã:
Option Explicit
Public Sub GPE()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim ChonO As Object, ChonF As Object, pFile, Path, ShName As String, TyName As String
Dim fil As Object, Wb As Workbook, Sh As Worksheet, WbMain As Workbook, OldName As String
Dim Arr, dArr, I As Long, K As Long, MH As String, DateF As Date, NewName As String
Set WbMain = ActiveWorkbook
pFile = WbMain.Name
DateF = WbMain.Sheets("...Data...").Range("H1").Value
MH = WbMain.Sheets("...Data...").Range("I1").Value
Arr = WbMain.Sheets("...Data...").Range("A1").CurrentRegion
ReDim dArr(1 To UBound(Arr), 1 To 2)
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "CHON FOLDER"
    .Show
    If .SelectedItems.Count = 0 Then Exit Sub
    Path = .SelectedItems(1) & "\"
End With
Set ChonO = CreateObject("Scripting.FilesystemObject")
Set ChonF = ChonO.GetFolder(Path)
For Each fil In ChonF.Files
If InStr(1, fil.Name, pFile) <= 0 Then
    ShName = ChonO.GetBaseName(fil)
    TyName = ChonO.GetExtensionName(fil)
    If Left(ShName, Len(MH)) = MH Then
        Set Wb = Workbooks.Open(fil.Path, , , , "AAA")
        Set Sh = Wb.Sheets("...Data...")
            For I = 2 To UBound(Arr)
                If Arr(I, 2) = MH Then
                    K = K + 1
                    dArr(K, 1) = K
                    dArr(K, 2) = Arr(I, 2)
                End If
            Next I
        Sh.Range("A2").Resize(K, 2).Value = dArr
        Workbooks(fil.Name).Close True
        OldName = ChonO.GetAbsolutePathName(fil)
        NewName = Path & MH & " (" & Format(DateF, "dd-MMM-yy") & ")." & TyName
        ChonO.MoveFile OldName, NewName
    End If
End If
Next fil
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub




1. Tôi xóa hết mấy thứ linh linh + code trong file của bạn...Tôi viết lại 1 code duy nhất
2. Gõ ngày cần đổi tên vào H1, Gõ mã hàng chính xác cần cập nhật vào I1
3. Run code -> Của sổ chọn Folder mở ra...-> Bạn tìm và chọn Cả folder chứa file B,C,D của bạn. Ok thì code làm việc

Chú ý rằng là file B, C, D tôi đổi tên cho giống với Mã hàng tại cột B file A... (Bạn chú ý điều này nhé). Có nghĩa rằng các ký tự đầu của Tên File phải bằng Tên của mã hàng cần Cập nhật dữ liệu....Chắc bạn hiểu tại sao phải làm như vậy...



Dạ.Anh ơi,
Em chưa chạy được code nữa, khi em bấm Run và chọn đến nơi chứa file excel thì không có file nào hết. ^^


Em cảm ơn anh
 
Upvote 0
Bạn download file về. Giải nén thư mục ra....Trong thư mục đang chứa file A/ Có 1 thư mục là New folder. File B,C,D của bạn nó nằm trong này...Bạn cứ việc chọn Folder "New Folder" này và Ok. Thì code nó làm việc thôi...

Chạy xong thì nó tự đóng file ấy lại...Bạn cần vào thư mực "New Folder" đó để kiềm tra xem dữ liệu có được cập nhật chưa???

P/s: tất nhiên là bạn phải test trên cái file tôi đính kèm...chứ không phải dùng code cho 1 file nào đó khác của bạn...

Tôi chắc rằng bạn chưa biết cách chạy code...--=0--=0--=0


Hahaha em cũng không biết nữa, em có cái hình, nó như vậy đó, hay là em phải chỉnh cái gì nữa ta.


Em cảm ơn Anh.
 

File đính kèm

  • Untitled new.jpg
    Untitled new.jpg
    40.6 KB · Đọc: 37
Upvote 0
Khổ bạn kinh đó. Chọn tới folder GPE_GetData. Nháy chuột chọn vào folder "New Folder" rồi nhấn OK. Chứ như bạn là bạn chọn và mở luôn cái thư mục "New Folder" ra luôn rồi...

Ở trên tôi có hướng dẫn là chọn Thư mục "New Folder" thôi...chứ có bảo chọn kiểu Open nó ra luôn đâu...--=0--=0--=0

Là vầy rồi nhấn Ok nè:



À À cái nay được nè , hèn chi em thấy thiếu thiếu cái gì đó , Hihihi


cùng lúc 3 file luôn được không anh , vì nhiều mã hàng lắm. đánh mã hàng vô I1 vậy lâu lắm.
 
Upvote 0
quote_icon.png
Nguyên văn bởi hpkhuong Khổ bạn kinh đó. Chọn tới folder GPE_GetData. Nháy chuột chọn vào folder "New Folder" rồi nhấn OK. Chứ như bạn là bạn chọn và mở luôn cái thư mục "New Folder" ra luôn rồi...Ở trên tôi có hướng dẫn là chọn Thư mục "New Folder" thôi...chứ có bảo chọn kiểu Open nó ra luôn đâu...--=0--=0--=0Là vầy rồi nhấn Ok nè:

À À cái nay được nè , hèn chi em thấy thiếu thiếu cái gì đó , Hihihi

cùng lúc 3 file luôn được không anh , vì nhiều mã hàng lắm. đánh mã hàng vô I1 vậy lâu lắm.

Trong lúc đợi anh, em làm cái này nè , anh thấy sao na. hahaha
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Anh hpkhuong ơi , nếu em muốn đổi vùng dữ liệu copy thì đổi ở chổ nào vậy anh
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ Anh hpkhuong, sửa sao để copy hết qua đây Anh , em sửa không nổi.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dạ Anh ơi , giúp em thêm 1 đoạn code nữa với , Lúc đổi tên file thêm cái tuần vô nữa được không Anh. Vi Dụ:(12-Jan-16)(Week 03)




Anh Chị và Thầy Cô có dạo qua giúp em cái.
Em cảm ơn nhiều à.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dạ Anh ơi , Em quên 1 chi tiết là cách tín tuần hơi khác chút.


Ví dụ : 04-Jan-16 = Là tuần thứ 1(Week 01),("Week "&WEEKNUM(H1,2)-1)


Anh Giúp em sữa lại chút nha. làm phiền Anh quá lần trước không nói 1 lần luôn. Em Sorry.


Em cảm ơn nhiều à.
 
Upvote 0
Dạ Anh, Tại em bí quá em làm vậy luôn , ngay 1, 2, 3 , em tính nó là tuần 53 của nam 2015 (Em lấy tay đánh vô luôn) hihihi




Dạ Anh ơi , anh có thể sữa lại chút là ngày chủ nhật nó vẫn là của tuần củ không Anh , thứ 2 mới qua tuần


Ví dụ : 04-JAN-16 đến 10-JAN-16 là Week 01
11-JAN-16 đến 17-JAN-16 là Week 02


Em cảm ơn nhiều à.
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ cái file hoàng thành tuyệt vời rồi anh ơi , Em cảm ơn Anh nhiều nhiều lắm lắm luôn.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom