Copy Module/Sub sang 1 tập tin khác bằng vba? (1 người xem)

Liên hệ QC

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

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,895
Được thích
1,219
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.
 
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.
Sao bạn không bỏ SupTestCopy vào module luôn.
 
Upvote 0
Upvote 0
Bạn tham khảo ở đây:
http://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.
 
Lần chỉnh sửa cuối:
Upvote 0
Copy module. Cái module trong file khác mới module bình thường nhé.

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 ạ.
 

File đính kèm

Upvote 0
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é.
 

File đính kèm

Upvote 0
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.
 
Upvote 0
Đơ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?)
 
Upvote 0
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.
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:
PHP:
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,...
 
Upvote 0
Web KT

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

Back
Top Bottom