无论本地用户设置如何,如何运行宏

时间:2017-11-06 20:22:53

标签: excel vba excel-vba

我有一个excel表,由多个用户通过网络使用,该书有一个宏,应该在书打开后立即运行。我的问题是有些用户禁用宏,因此当他们打开书时宏不会运行。我知道禁用宏是一个很好的安全功能,但我真的想为这本书启用所有宏,无论用户的设置如何。

无论用户设置是什么,有没有办法启用宏?

1 个答案:

答案 0 :(得分:2)

在我工作的公司里,我遇到过这样的情况。我们有一个系统,它使用Excel工作表将系列中的数字作为设计工作的项目编号。用户一直在互相抓住,所以我写了一个宏来帮助减少问题,但有些用户没有启用宏,所以它引起了问题。

你不能启用/禁用可能不好的宏,但你可以给用户一个微调。

  1. 首先,设置一个工作表,向用户解释如何启用宏,(小免责声明)并解释确保它们仅启用已知作者的宏的重要性。
  2. 接下来,将该工作表设为唯一可见的工作表。
  3. 制作所有其他工作表really-hidden,当您启用宏时,unhide工作表,并隐藏说明表。
  4. 如果他们已经启用了宏,他们将无法看到解释页面。

    以下是我使用的代码:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        'Step 1: Declare your variables
        Dim ws As Worksheet
        Dim result As Variant
    
        'Step 2: Unhide the Starting Sheet
        Sheets("START").Visible = xlSheetVisible
    
        'Step 3: Start looping through all worksheets
        For Each ws In ThisWorkbook.Worksheets
    
            'Step 4: Check each worksheet name
            If ws.Name <> "START" Then
    
                'Step 5: Hide the sheet
                ws.Visible = xlVeryHidden
            End If
    
        'Step 6: Loop to next worksheet
        Next ws
    
        'Step 7: Save the workbook
        ActiveWorkbook.Save
    End Sub
    
    Private Sub Workbook_Open()
        'Step 1: Declare your variables
        Dim ws As Worksheet
    
        'Step 2: Start looping through all worksheets
        For Each ws In ThisWorkbook.Worksheets
    
            'Step 3: Unhide All Worksheets
            ws.Visible = xlSheetVisible
    
        'Step 4: Loop to next worksheet
        Next ws
    
        'Step 5: Hide the Start Sheet
        Sheets("START").Visible = xlVeryHidden
    End Sub