Addin

1. Lưu thành file Addin bằng VBA.
Giả sử chúng ta đang code trên một file Excel, lưu file này thành xlsm.
Bây giờ muốn lưu file này thành Addin thì làm như sau:
Mã:
Sub AddinSaveas()
  Dim strFile As String
  strFile = Replace(ThisWorkbook.FullName, ".xlsm", ".xlam")
  If Dir(strFile) <> "" Then Kill strFile
  ThisWorkbook.SaveAs Filename:=strFile, FileFormat:=xlOpenXMLAddIn
End Sub
Cách trên ta lưu file addin cùng thư mục với file code xlsm. Tuy nhiên thực tế, các file Addin thường có một folder được quy định riêng. Code dưới đây sẽ giúp các bạn truy cập tới folder này :
Mã:
Sub AddinFolder()
  Dim wsh As Object
  Set wsh = CreateObject("WScript.Shell")
  MsgBox wsh.SpecialFolders("Appdata") & "\Microsoft\Addins\"
End Sub
Tuy nhiên, nếu chúng ta làm công việc phân phối một sản phẩm Addin. Tôi cho rằng lựa chọn tốt hơn hết là lưu addin này tới một thư mục riêng biệt nào đó trên máy tính thì tốt hơn. Ta có thể kiểm tra hoạt động không chỉ là đăng ký Addin và sử dụng, mà còn có thể mở trực tiếp file Addin này và kiểm tra nó.

2. Đăng ký Addin bằng VBA
Đoạn code sau sẽ đăng ký một file Addin xlam cho hiển thị trên danh sách Addin của Excel.
Mã:
Sub AddinAdd()
  AddIns.Add ThisWorkbook.Path & "\AddinTest.xlam"
End Sub
3. Cài đặt Addin
Việc này tuơng đường với tích chọn vào danh sách Addin lựa chọn ra Addin mà ta muốn sử dụng.
Mã:
Sub AddinInstall()
  AddIns("AddinTest").Installed = True
End Sub
4. Hiển thị danh sách quản lý Addin
Mã:
Sub AddinManeger()
    Dim rtn
    rtn = Application.Dialogs(xlDialogAddinManager).Show
    If rtn = True Then
        MsgBox "OK"
    Else
        MsgBox "Cancel"
    End If
End Sub
5. Tự động đăng ký khi phân phối Addin ra ngoài.
Mã:
Sub AdinAutoInstall()
  Dim InstallPath
  Dim AddinPath
  Dim AddinFile
  Dim AddinName
  Dim xlApp
  Dim fso
  Dim wsh
  
  AddinName = "AddinTest" 'Addin file name、Addin name
  AddinFile = AddinName & ".xlam"
  
  On Error Resume Next
  
  'Lam viec voi Excel
  Set xlApp = Application 'VBA
  'Set xlApp = CreateObject("Excel.Application") 'VbScript
  
  'Truong hop da dang ky thi huy chon
  xlApp.AddIns(AddinName).Installed = False
  
  'Obj duoc su dung de giao tiep
  Set wsh = CreateObject("WScript.Shell")
  Set fso = CreateObject("Scripting.FileSystemObject")
  
  'Addin file name, truong hop nay la de chung trong mot folder me
  AddinPath = ThisWorkbook.Path & "\" 'VBA
  'AddinPath = fso.GetFolder(".") & "\" 'VbScript
  
  'Addins folder、Co the chi dinh folder tuy y
  InstallPath = wsh.SpecialFolders("Appdata") & "\Microsoft\Addins\"
  'Copy file Addin
  fso.CopyFile AddinPath & AddinFile, InstallPath & AddinFile, True
  
  'Dang ky file Addin
  'xlApp.Workbooks.Add 'VbScript
  xlApp.AddIns.Add InstallPath & AddinFile
  xlApp.AddIns(AddinName).Installed = True
  'xlApp.Quit 'VbScript
  
  'Giai phong bo nho
  Set wsh = Nothing
  Set fso = Nothing
  Set xlApp = Nothing
  
  MsgBox "Cai dat thanh cong"
End Sub
Nguồn tham khảo:
 
Top