Làm sao dùng VBA để xóa 1 addin trong list addin

Liên hệ QC

Quang_Hải

Thành viên gạo cội
Tham gia
21/2/09
Bài viết
6,069
Được thích
7,992
Nghề nghiệp
Làm đủ thứ
Các bạn cho mình hỏi có thể nào dùng VBA để xóa 1 Addin trong list như hình đính kèm không?
Thông thường sau khi 1 Addin đã bị xóa hoặc thay đổi đường dẫn, mình vào list này và check vào addin đó để xóa nó ra khỏi list. Do công việc yêu cầu mình cần xóa bằng VBA nhưng không biết làm sao.

Anh chị nào có hướng xử lý vui lòng chia sẻ nhé

Cảm ơn

1685602906092.png
 
Liên quan thiết lập thì cứ vào Registry mà trị thôi.

Addins có ở mấy mục:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel\Addins
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Excel\Addins
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Excel\AddinsData

Muốn chỉnh Registry bằng VBA thì chuyển nó thành mấy lệnh shell.
 
Upvote 0
Các bạn cho mình hỏi có thể nào dùng VBA để xóa 1 Addin trong list như hình đính kèm không?
Thông thường sau khi 1 Addin đã bị xóa hoặc thay đổi đường dẫn, mình vào list này và check vào addin đó để xóa nó ra khỏi list. Do công việc yêu cầu mình cần xóa bằng VBA nhưng không biết làm sao.

Anh chị nào có hướng xử lý vui lòng chia sẻ nhé

Cảm ơn

View attachment 290885
Mọi cái nó lưu trong registry của máy sử dụng nó ... em nay toàn hỏi con chatGPT nó cho hướng code xong từ đó viết thêm là xong

mã ChatGPT

Mã:
Sub RemoveAddin()
    Dim addinName As String
    Dim regKey As Object
    
    ' Tên của Add-in cần xóa
    addinName = "Tên Add-in"
    
    ' Đường dẫn đến khóa registry của danh sách Add-in
    Set regKey = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins")
    
    ' Kiểm tra và xóa Add-in từ registry
    If regKey.Exists(addinName) Then
        regKey.DeleteValue addinName
    End If
End Sub
 
Upvote 0
Mọi cái nó lưu trong registry của máy sử dụng nó ... em nay toàn hỏi con chatGPT nó cho hướng code xong từ đó viết thêm là xong

mã ChatGPT

Mã:
Sub RemoveAddin()
    Dim addinName As String
    Dim regKey As Object
  
    ' Tên của Add-in cần xóa
    addinName = "Tên Add-in"
  
    ' Đường dẫn đến khóa registry của danh sách Add-in
    Set regKey = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins")
  
    ' Kiểm tra và xóa Add-in từ registry
    If regKey.Exists(addinName) Then
        regKey.DeleteValue addinName
    End If
End Sub
Mình đang xài Office 365. Trong registry không có khóa Addins trong mục Excel. Đã thử code và thất bại rồi
Bài đã được tự động gộp:

Cái mình cần chính xác là vụ này nè. Làm sao dùng code VBA để thực hiện công đoạn này Mò hoài vẫn chưa tìm được cách

1685609013676.png
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đang xài Office 365. Trong registry không có khóa Addins trong mục Excel. Đã thử code và thất bại rồi
Bài đã được tự động gộp:

Cái mình cần chính xác là vụ này nè. Làm sao dùng code VBA để thực hiện công đoạn này Mò hoài vẫn chưa tìm được cách

View attachment 290900
Em lại bỏ 365 nên rồi cũng chịu không test dùm anh được

Nhớ lạ 2 năm trước em dùng 365 bản 64 bít tìm cách check Excel cho VB6 hoài không xong mò google diết không ra ...

nhưng vô tình chọc bậy nó ra check được Excel 365 bản 64 bit cho VB6 đấy ... mà nay bỏ 365 rồi
 
Upvote 0
Mình đang xài Office 365. Trong registry không có khóa Addins trong mục Excel. Đã thử code và thất bại rồi
Bài đã được tự động gộp:

Cái mình cần chính xác là vụ này nè. Làm sao dùng code VBA để thực hiện công đoạn này Mò hoài vẫn chưa tìm được cách

View attachment 290900
Máy tui Office 365 thấy nó nằm chổ này và chổ như @befaint
Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Excel\Add-in Manager
 
Upvote 0
Sau khi đã vọc đủ kiểu, đọc tùm lum trên internet thì nhận được câu trả lời thế này:
"Chỉ có thể dùng VBA để Install và UnInstall 1 addin, không có cách nào xóa hoàn toàn 1 addin bằng VBA"

Thất vọng thiệt. Mong là câu trả lời này chỉ đúng 50% thôi. Hức
 
Upvote 0
Hình như Anh Hải vẫn sử dụng VB6 ... mà nếu dùng Office 365_x64 thì thử check Excel cho DLL xem ... nó sẽ không cho đâu

Tìm Google sẽ không thấy ... thế mà mất cả năm em mới dò ra :p
 
Upvote 0
Hình như Anh Hải vẫn sử dụng VB6 ... mà nếu dùng Office 365_x64 thì thử check Excel cho DLL xem ... nó sẽ không cho đâu

Tìm Google sẽ không thấy ... thế mà mất cả năm em mới dò ra :p
Môi trường làm việc là cho toàn công ty chứ không phải máy cá nhân nên muốn code két gì cũng phải cân nhắc đến quyền Admin. VB6 thì phải dll, rồi phải đăng ký.... Nói chung là VB6 chỉ xài khi viết ứng dụng đóng gói thôi
 
Upvote 0
Môi trường làm việc là cho toàn công ty chứ không phải máy cá nhân nên muốn code két gì cũng phải cân nhắc đến quyền Admin. VB6 thì phải dll, rồi phải đăng ký.... Nói chung là VB6 chỉ xài khi viết ứng dụng đóng gói thôi
Anh thử Ctrl + F Xem nhiều lúc kẹt em hay làm vậy

1685612330577.png
 
Upvote 0
Sau khi đã vọc đủ kiểu, đọc tùm lum trên internet thì nhận được câu trả lời thế này:
"Chỉ có thể dùng VBA để Install và UnInstall 1 addin, không có cách nào xóa hoàn toàn 1 addin bằng VBA"

Thất vọng thiệt. Mong là câu trả lời này chỉ đúng 50% thôi. Hức
Bác lưu code bên dưới thành file .vbs rồi chạy xem thử.

Mã:
Dim objFSO
Dim WshShell

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

destFolderPath = WshShell.ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\AddIns\"

Dim oXL,crAddin,i
Set oXL = CreateObject("Excel.Application")
For i = 1 to oXL.Addins.Count
    Set crAddin = oXL.Addins.item(i)
    If crAddin.Name = "Ten_Addin" then
        crAddin.Installed = False
    End If
Next

If objFSO.FileExists(destFolderPath & "Ten_Addin.xlam") Then
    objFSO.DeleteFile destFolderPath & "Ten_Addin.xlam"
End If
oXL.Quit

WshShell.Popup "Đã gỡ cài đặt Add-in.",vbOKOnly + vbSystemModal,"Thông báo"

Set oXL = Nothing
Set crAddin = Nothing
Set objFSO = Nothing
Set WshShell = Nothing

WScript.Quit
 
Upvote 0
Mấy hôm trước em cũng có ý định giống thế này, tìm lung tung chỗ thì có cái này, họ đề cập đến VBS mà em bó tay nên bỏ qua.
Nay có điểm chung nên bác nào nghiên cứu được thì hay quá.
Code này em có thử nhưng có lẽ không biết thay tên thế nào cho đúng nên vẫn còn trong cửa sổ Addin Manager.

Link Microsoft
 

File đính kèm

  • 1685631083251.png
    1685631083251.png
    269.1 KB · Đọc: 19
Upvote 0
Mấy hôm trước em cũng có ý định giống thế này, tìm lung tung chỗ thì có cái này, họ đề cập đến VBS mà em bó tay nên bỏ qua.
Nay có điểm chung nên bác nào nghiên cứu được thì hay quá.

Code này em có thử nhưng có lẽ không biết thay tên thế nào cho đúng nên vẫn còn trong cửa sổ Addin Manager.

Link Microsoft
Thay đường dẫn + tên chỗ hằng số TestAddin là được chứ gì. Dùng thử 1 cái add-in đọc số thành chữ xem sao.
 
Upvote 0
Mọi cái trong registry ấy tìm cách xóa hết là sạch sẽ thôi

Tôi mới thử xóa = tay trong Registry xong mở lại Excel xem có thấy gì không hết sạch vào không báo lỗi gì cả
 
Upvote 0
Mọi cái trong registry ấy tìm cách xóa hết là sạch sẽ thôi

Tôi mới thử xóa = tay trong Registry xong mở lại Excel xem có thấy gì không hết sạch vào không báo lỗi gì cả
Vấn đề là phải đóng excel hoàn toàn. Mình đang cần xử lý khi excel đang mở. Nói chung là đang bó tay đó.
 
Upvote 0
Vấn đề là phải đóng excel hoàn toàn. Mình đang cần xử lý khi excel đang mở. Nói chung là đang bó tay đó.
chủ nhật rảnh em test xem sao trên máy em 2021 xong báo lại cho

MỚi nhớ lại mấy năm trước Anh code khởi động lại Excel sau khi thực hiện ... anh thử lại cách đó xem
 
Upvote 0
chủ nhật rảnh em test xem sao trên máy em 2021 xong báo lại cho

MỚi nhớ lại mấy năm trước Anh code khởi động lại Excel sau khi thực hiện ... anh thử lại cách đó xem
Chắc phải chơi chiêu xấu là cứ cho đóng Excel tự động. Người dùng sẽ phải tự mở lại file thôi. Ngại ghê
 
Upvote 0
Chắc phải chơi chiêu xấu là cứ cho đóng Excel tự động. Người dùng sẽ phải tự mở lại file thôi. Ngại ghê
Em nghĩ chỉ cách cách đó thôi vì file đang sử dụng xóa không được

chỉ có cách thoát ra chạy code xong mở lại
 
Upvote 0
Web KT

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

Back
Top Bottom