Copy Module/Sub sang 1 tập tin khác bằng vba?

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Xin chào các bạn.
Như tiêu đề tôi đã nêu nhờ các bạn giúp đỡ ạ, cụ thể như sau:

Trong tập tin A tôi có nhiều Module:
Module1,Module2,Module3,…
Trong Module1 của tập tin A tôi muốn có một Sub Macro có tên là CopyModule
Làm sao để khi chạy Sub CopyModule thì toàn bộ Module2 và một Sub Macro có tên là SubTestCopy trong module3 sẽ copy từ tập tin A sang tập tin B?

Xin chân thành cảm ơn.

Bạn tham khảo ở đây:
https://www.cpearson.com/excel/vbe.aspx
CAUTION: Many VBA-based computer viruses propagate themselves by creating and/or modifying VBA code. Therefore, many virus scanners may automatically and without warning or confirmation delete modules that reference the VBProject object, causing a permanent and irretrievable loss of code. Consult the documentation for your anti-virus software for details.

Copy module. Cái module trong file khác mới module bình thường nhé.

www.giaiphapexcel.com/diendan/threads/copy-module-sub-sang-1-t%E1%BA%ADp-tin-kh%C3%A1c-b%E1%BA%B1ng-vba.131982/

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học SprinGO phù hợp

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM

Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

One Response

  1. hands says:

    Xin chào huuthang_bd,
    Cảm ơn anh đã giúp đỡ, Oanh Thơ test thử với một tập tin có một module thì OK rồi anh ạ, nhưng nếu tập tin có 2 module thì muốn copy module nào đó sang tập tin khác thì gặp vấn đề, Oanh Thơ đã loay hoay nhưng chưa xử lý được.

    Nhờ anh và các bạn khác xem giúp ạ.

    Copy module. Cái module trong file khác mới module bình thường nhé.

    Xin chào huuthang_bd,
    Tập tin anh gửi OK rồi ạ.
    ——–

    Oanh Thơ cũng đã tạo thêm 1 "module 3" và tạo thêm 1 CommandButton3 trên UserForm1
    Trong UserForm1 oanh Thơ cũng đã thêm 1 đoạn code :

    Private Sub CommandButton3_Click()
    'On Error Resume Next
    Dim WB As Workbook
    Set WB = Workbooks(Me.ComboBox1.Value)
    If Not WB Is Nothing Then
        Sheets("Module3").Copy WB.Sheets(1)
    End If
    Unload Me
    End Sub

    Khi chạy đoạn code này code vẫn báo lỗi.
    Oanh Thơ cũng có để ý "Cái module trong file khác mới module bình thường nhé" nhưng chưa hiểu ạ.
    Nhờ anh có thể giải thích thêm điểm khác biệt này được không ạ.

    Cảm ơn anh rất nhiều.

    Đơn giản, ngắn gọn thế này nhé:
    Sub Test()
    ThisWorkbook.VBProject.VBComponents("module2").Export "NguyenHoangOanhTho"
    Workbooks("Book1.xlsm").VBProject.VBComponents.Import
    "NguyenHoangOanhTho"
    End Sub
    Chỗ màu đỏ: Tên Module cần copy
    Chỗ màu xanh: Tên Workbook nơi copy đến
    Từ cái đơn giản này, hãy tùy biến thêm, chẳng hạn có thể tạo luôn thành 1 function hay sub có đối số truyền vào để gọi code cho nhanh
    —————————–

    Nhân tiện bạn tự suy nghĩ thêm tại sao lại có chỗ màu xanh lá kia? (tên bạn viết vào code chạy được luôn?)

    Module đó không giống như các module thông thường. Nó có một số thuộc tính như một sheet, trong code bạn cũng thấy copy bằng lệnh Sheets(…).Copy. Và nó được tạo bằng code sau:
    Sub CreateModuleSheet()
    ActiveWorkbook.Modules.Add.Name = "ModuleSheet"
    End Sub
    Vì nó như một sheet nên khi copy không gặp các rắc rối như khi thao tác với code VBA như "Trust access to the VBA…", VBA bị khóa,…

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm