簡體   English   中英

檢查Excel宏安全設置

[英]Check Excel Macro Security Settings

我有一個啟動Excel宏的vb.net應用程序。 有沒有一種方法可以先檢查Excel的宏安全設置?

Imports Excel = Microsoft.Office.Interop.Excel
Private Sub macrotest ()

     objExcel.Workbooks.Open(strPath)

     if ***'Check her what macro Security Settings is selected!*** Then
         objExcel.Run("SortIO")
     end if
End Sub

我在站點上發現可以檢查注冊表的安全設置。 我發現的一個問題是我的注冊表項不在站點上所引用的確切位置。 話雖這么說,您可能只想嘗試捕獲它,或者使用更復雜的方法在注冊表中查找VBAWarnings項。

    Dim strVBASecuritySetting As String = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Security", _
                                                                        "VBAWarnings", String.Empty)

    If strVBASecuritySetting = "1" Then

        objExcel.Run("SortIO")

    End If

這些是VBAWarnings的可能值:

  1. 全部啟用
  2. 禁用所有通知功能
  3. 禁用除數字簽名以外的所有內容
  4. 全部禁用,恕不另行通知

這似乎已經交叉發布到Excel VBA問題頁面:您介意說慢一點嗎?

... 讀起來很慢 ...

好吧,我可以在VBA中給您一個答案: Excel.Application.AutomationSecurity屬性。

可用值由Office.MsoAutomationSecurity枚舉:

1 msoAutomationSecurityLow
2個msoAutomationSecurityByUI
3 msoAutomationSecurityForceDisable

這些是公開給VBA的API中可用的宏的設置。 功能區的“開發人員”選項卡中可見的用戶界面與NoAlias在上一個答案中解釋的注冊表設置相對應:

HKEY_CURRENT_USER \\ Software \\ Microsoft \\ Office \\ 15.0 \\ Excel \\ Security \\ VBA警告

具有以下枚舉值:

  1. 啟用所有宏
  2. 禁用所有帶有通知的宏
  3. 禁用所有宏,除了數字簽名的宏
  4. 禁用所有宏,恕不另行通知

如果您沿注冊表路線走,VBA編碼器的建議是使用WMI腳本公開的安全注冊表類...並檢查您的用戶是否確實具有使該注冊表寫入的特權:可能存在一個注冊表策略防止它的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM