Từ 1 file lệnh cho các file khác (1 người xem)

Liên hệ QC

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

sep_hatxel

Thành viên thường trực
Tham gia
24/5/10
Bài viết
217
Được thích
7
Mình có thư mục DATA gồm có 5 file Excel:
1/ 1 File DATA: Chứa dữ liệu ban đầu, mình phải nhập dữ liệu thay đổi vào file này
2/ 4 file còn lại là COPY01; COPY02;COPY03; COPY04
- Bình thường mình nhập dữ liệu vào file DATA, nhưng do dữ liệu ở file DATA rất lớn nên mình phải chia nhỏ ra thành nhiều file COPY. Mở file DATA rồi mở lần lượt file COPY01: dữ liệu sẽ được copy từ file DATA và Insert Shift:=xlToRight vào file COPY01; Tương tự như vậy mình làm với file COPY02; COPY03; COPY04.
- Nay mong GPE có thể chỉ giúp làm cách nào mà từ file DATA tạo Code chỉ cần thực hiện 1 lần thay cho 4 lần phải mở lần lượt các file COPY kia? Xin chân thành cảm ơn rất nhiều!
 

File đính kèm

Bạn đưa ra các file ví dụ trống trơn ai biết đâu mà làm. Ít ra bạn cũng phải "nhét" vào các file ví dụ ít dữ liệu rồi tại file DATA bạn cho kết quả chính xác mong muốn từ 4 file copy kia chứ.

Đó cũng là kinh nghiệm hỏi đáp đấy bạn!

Chúc bạn thành công!
 
Bạn đưa ra các file ví dụ trống trơn ai biết đâu mà làm. Ít ra bạn cũng phải "nhét" vào các file ví dụ ít dữ liệu rồi tại file DATA bạn cho kết quả chính xác mong muốn từ 4 file copy kia chứ.

Đó cũng là kinh nghiệm hỏi đáp đấy bạn!

Chúc bạn thành công!
Bạn ơi! Trong file mình đã lập giả định rồi mà! Bạn chỉ cần mở file data rồi mở file copy01 chẳng hạn thì code có sẵn sẽ chạy luôn rồi file copy01 sẽ thoát đi! Bạn thoát file data đi và mở lại file copy01 dữ liệu đã được copy từ file data sang file copy01 rồi! Mong bạn xem lại giúp! Cảm ơn bạn đã quan tâm!
 
Bạn ơi! Trong file mình đã lập giả định rồi mà! Bạn chỉ cần mở file data rồi mở file copy01 chẳng hạn thì code có sẵn sẽ chạy luôn rồi file copy01 sẽ thoát đi! Bạn thoát file data đi và mở lại file copy01 dữ liệu đã được copy từ file data sang file copy01 rồi! Mong bạn xem lại giúp! Cảm ơn bạn đã quan tâm!

Không biết có đúng ý bạn không nhưng thử làm như sau nhé.

1. Mở COPY01, 02, 03, 04.xlsm và xóa hết các code hiện thời. Đóng tất cả.

2. Mở DATA.xlsm và copy code sau vào module, vd. Module1
Mã:
Sub hichic()
Dim k As Long, filename As String, wb As Workbook, curr_sheet As Worksheet
    Set curr_sheet = ActiveSheet
    For k = 1 To 4
        filename = ThisWorkbook.Path & "\COPY0" & k & ".xlsm"
        Set wb = Workbooks.Open(filename)
        curr_sheet.Range("G1:DA53").Copy wb.Sheets("AB").Range("G1")
        Application.CutCopyMode = False
        wb.Close True
        curr_sheet.Range("G4:DA53").Delete Shift:=xlUp
    Next
    ThisWorkbook.Save
End Sub

3. Bạn đặt lên sheet AB một Button và gán cho nó macro hichic.

4. Bạn nhập dữ liệu khi nào mỏi tay thì nhấn Button
 
Mã:
Sub hichic()
Dim k As Long, filename As String, wb As Workbook, curr_sheet As Worksheet
    Set curr_sheet = ActiveSheet
    For k = 1 To 4
        filename = ThisWorkbook.Path & "\COPY0" & k & ".xlsm"
        Set wb = Workbooks.Open(filename)
        curr_sheet.Range("G1:DA53").Copy wb.Sheets("AB").Range("G1")
        Application.CutCopyMode = False
        wb.Close True
        curr_sheet.Range("G4:DA53").Delete Shift:=xlUp
    Next
    ThisWorkbook.Save
End Sub
Anh giải thích hộ em cái dòng này với curr_sheet.Range("G4:DA53").Delete Shift:=xlUp. Cảm ơn anh
 
Mã:
Sub hichic()
Dim k As Long, filename As String, wb As Workbook, curr_sheet As Worksheet
    Set curr_sheet = ActiveSheet
    For k = 1 To 4
        filename = ThisWorkbook.Path & "\COPY0" & k & ".xlsm"
        Set wb = Workbooks.Open(filename)
        curr_sheet.Range("G1:DA53").Copy wb.Sheets("AB").Range("G1")
        Application.CutCopyMode = False
        wb.Close True
        curr_sheet.Range("G4:DA53").Delete Shift:=xlUp
    Next
    ThisWorkbook.Save
End Sub
Anh giải thích hộ em cái dòng này với curr_sheet.Range("G4:DA53").Delete Shift:=xlUp. Cảm ơn anh

Bạn tự thử được mà.

Thực ra là trùng giá trị. Tường minh thì là xlShiftToLeft (=xlLeft) và xlShiftUp (=xlUp)

Mã:
Range.Delete Method 
Deletes the object.
Syntax

expression.Delete(Shift)

expression   A variable that represents a Range object.

Parameters

Name Required/Optional Data Type Description 
Shift Optional Variant Used only with Range objects. Specifies how to shift cells to replace deleted cells. Can be one of the following XlDeleteShiftDirection constants: xlShiftToLeft or xlShiftUp. If this argument is omitted, Microsoft Excel decides based on the shape of the range. 

Return Value
Variant

1. Bạn nhập nhiều dữ liệu vào vùng vd. [C5:H10]
2. Đặt Button và gán cho sub hehe
Mã:
Sub hehe()
    ActiveSheet.Range("C5:F7").Delete Shift:=xlShiftUp
End Sub

Và save tập tin.

3. Nhấn Button. Bạn thấy kết quả thế nào? Nói nôm na thì hiệu ứng như là làm 2 thao tác:
a. Khoét 1 lỗ hình chữ nhật ở vùng [C5:F7] - tức Delete
b. Tất cả các ô trong cột từ C tới F mà nằm dưới lỗ hình chữ nhật kia sẽ được dịch lên trên (Up) để "lấp" lỗ.

4. Bạn đóng tập tin nhưng không save nữa. Bây giờ mở lại và sửa thay xlShiftUp bằng xlShiftToLeft

5. Nhấn Button. HIệu ứng như là có 2 thao tác
a. Khoét 1 lỗ hình chữ nhật ở vùng [C5:F7] - tức Delete
b. Tất cả các ô trong dòng từ 5 tới 7 mà nằm bên phải lỗ hình chữ nhật kia sẽ được dịch sang trái (Left) để "lấp" lỗ.
 
Không biết có đúng ý bạn không nhưng thử làm như sau nhé.

1. Mở COPY01, 02, 03, 04.xlsm và xóa hết các code hiện thời. Đóng tất cả.

2. Mở DATA.xlsm và copy code sau vào module, vd. Module1
Mã:
Sub hichic()
Dim k As Long, filename As String, wb As Workbook, curr_sheet As Worksheet
    Set curr_sheet = ActiveSheet
    For k = 1 To 4
        filename = ThisWorkbook.Path & "\COPY0" & k & ".xlsm"
        Set wb = Workbooks.Open(filename)
        curr_sheet.Range("G1:DA53").Copy wb.Sheets("AB").Range("G1")
        Application.CutCopyMode = False
        wb.Close True
        curr_sheet.Range("G4:DA53").Delete Shift:=xlUp
    Next
    ThisWorkbook.Save
End Sub

3. Bạn đặt lên sheet AB một Button và gán cho nó macro hichic.

4. Bạn nhập dữ liệu khi nào mỏi tay thì nhấn Button
! Vâng, chỉ một từ: Tuyệt! Cảm ơn bạn, nhưng có 1 vấn đề là mình cần dữ liệu từ file DATA dán tiếp nối vào dữ liệu của những file COPY (không phải là dán đè lên thay thế ạ); ví dụ file COPY có dữ liệu lần 1 sau khi thực hiện copy từ file DATA là: 1234; dữ liệu copy từ file DATA thực hiện lần 2 là 5678 thì sẽ được dán tiếp nối vào file COPY thành như sau: 56781234!
- Mong xem giúp qua! Cảm ơn bạn!
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom