Xóa và chèn Module

  • Thread starter Thread starter msc0506
  • Ngày gửi Ngày gửi
Liên hệ QC

msc0506

Thành viên chính thức
Tham gia
14/4/08
Bài viết
56
Được thích
12
Mình đang viết 1 add-in để thay module ý là :

Mỗi lần nhận đc báo cáo của cty thì phải sửa lại code trong module1 để load 1 số thông tin vậy mình viết lại module này (nằm trong add-in dặt tên fuc1) khi mở Báo cáo lên gọi add-in len thì xóa module1 trong báo cáo và nạp theo fuc1

Các bạn giúp mình nhé , bạn nào có code ví dụ up len giúp mình càng tốt vì mình là lính mới yếu lắm
Cảm ơn trước
 
- Bạn nên mô tả công việc kèm theo file vd càng tốt
để đưa ra hướng viết chương trình tổng quát.
- Còn viết chương trình để tùy biến module thì chưa ai làm bao giờ.
 
Upvote 0
Cảm ơn !

Chỉ là : Khi Gọi add-in đó chạy thì nó thực hiện :
- Remove 1 module tên Module1 ra ("C:/Module1.bas") và lưu lại.
- Import 1 module tên là Fuc1 ("C:/Fuc1.bas") vào

và ngược lại khi đóng lại .

Không biết có code để thực hiện việc này không bạn
Nếu có bạn có thể ví dụ giúp mình nhé
 
Lần chỉnh sửa cuối:
Upvote 0
Muốn remove Module1, bạn dùng đoạn code sau:
Mã:
Sub DeleteThisModule()
Dim vbCom As Object
Set vbCom = Application.VBE.ActiveVBProject.VBComponents
      vbCom.Remove VBComponent:= vbCom.Item("Module1")
End Sub
Muốn Import module Fuc1 vào 1 workbook, bạn dùng đoạn code sau:
Mã:
Sub CopyModule()
    ThisWorkbook.VBProject.VBComponents("Fuc1").Export "Module1.bas"
    With Workbooks("Test.xls").VBProject
      .VBComponents.Import "Module1.bas"
      .VBComponents("Module1").Name = "Fuc1"
   End With
    Kill "Module1.bas"
End Sub
 
Upvote 0
Không được rôi Voda ạ

Mình đã thử mà không đc

Nó baos lỗi rôi minh goi lên bạn xem dùm mình nhé

Cảm ơn
 
Upvote 0
Mình đã kiểm tra lại, bạn xem có phải thế này không:
-Code DeleteModule: chạy tốt không báo lỗi.
-Code CopyModule: Báo lỗi ở dòng .VBComponents("Module1").Name = "Fuc1"
Nguyên nhân: Bởi vì bạn copy lên chính nó. Dòng lệnh trên đổi tên module = Fuc1 trong khi module Fuc1 đang tồn tại, gây ra lỗi. Khắc phục bằng cách xóa dòng lệnh này.
 
Upvote 0
Bạn bỏ dòng : ThisWorkbook.VBProject.VBComponents("Fuc1").Export "Module1.bas", thì tét được ngay.

Xin thầy Voda giúp dùng câu lệnh để Eport Module thành file .bas
 
Upvote 0
-Muốn Export module thành file.bas, ta dùng dòng lệnh:
ThisWorkbook.VBProject.VBComponents("Tên module").Export "Đường dẫn\tên file.bas"
-ví dụ:
Sub ExportModule()
ThisWorkbook.VBProject.VBComponents("Module1").Export "C:\Mod.bas"
End Sub
 
Upvote 0
Cả 2 lânh đêu ko chạy đc !
- Đều báo lỗi dòng lạnh đầu tiên :

+ ThisWorkbook.VBProject.VBComponents("Fuc1").Export "Module1.bas"

+ Set vbCom = Application.VBE.ActiveVBProject.VBComponents

Minh cung ko hiểu tại sao đã thử lại , đã đổi lại tên Fuc1 = Fuc2 để chạy cũng bị lỗi

Thân
 
Upvote 0
-Bạn vào Tools/Macro/Security/Trusted Publishers, đánh dấu chọn vào mục Trust ascess to Visual Basic Project.
 
Upvote 0
Cảm ơn bạn mình đã thử và chạy thì 2 hàm trên đều đc nhưng hàm copy lậnh rename bị lỗi rồi

Code :
Sub CopyModule()
ThisWorkbook.VBProject.VBComponents("Fuc2").Export "Module1.bas"
With Workbooks("Test.xls").VBProject
.VBComponents.Import "Module1.bas"
.VBComponents("Module1").Name = "Fuc1"
End With
Kill "Module1.bas"
End Sub

Bạn xem dùm mình nhé
đây mô hình dự án mình đang làm
http://www.giaiphapexcel.com/forum/showthread.php?t=10650
 
Upvote 0
+Bạn có thể bỏ dòng lệnh gây lỗi đó đi (.VBComponents("Module1").Name = "Fuc1" ),kết quả vẫn không thay đổi:
-Trường hợp copy module trong cùng 1 workbook: tên được đặt theo mặc định: Fuc11,Fuc12, Fuc13...
-Trường hợp copy module sang 1 workbook khác, module vẫn giữ tên cũ.
+Về dự án của bạn, mình đã đọc kỹ nhưng vẫn chưa hiểu hết ý đồ:
-CSDL của bạn thuộc loại nào? Có phải file excel không?
-Việc xóa module có cần không? Nếu không muốn dùng nó, ta chỉ cần không cho nó chạy là được rồi.
-Việc copy module có cần không? Khi ta đã AddIn nó vào file, có nghĩa là nó đã được cài vào file rồi, cần gì phải copy nữa.
+Bạn cần nói rõ thêm ý đồ, nếu được gởi file dự án lên để các bạn khác hiểu, mới có thể góp ý được.
 
Upvote 0
Minh đã làm được rôi cảm ơn bạn nhiều , bạn chỉ cho minh làm sao để không cho hàm chạy như bạn nói vì khi nạp vào mình muốn hàm Auto Open của nó ko chay mà chạy bằng 1 hàm nằm trong Module1 mà mhìnnhh đã chép vào trong thủ tục mở tệp rồi
 
Upvote 0
Web KT

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

Back
Top Bottom