Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何在不考虑本地用户设置的情况下运行宏_Vba_Excel - Fatal编程技术网

Vba 如何在不考虑本地用户设置的情况下运行宏

Vba 如何在不考虑本地用户设置的情况下运行宏,vba,excel,Vba,Excel,我有一个excel表格,由多个用户通过网络使用,这本书有一个宏,应该在书一打开就运行。我的问题是,一些用户禁用了宏,因此当他们打开书本时,宏不会运行。我知道禁用宏是一个很好的安全功能,但我真的想启用本书的所有宏,而不管用户的设置如何 无论用户设置如何,是否有办法启用宏 在我工作的公司里,我遇到过这样的情况。我们有一个系统,它使用excel表格在一系列中获取一个数字,作为设计工作的项目编号。用户们一直在互相抢夺,所以我写了一个宏来帮助减少问题,但是有些用户没有启用宏,所以导致了问题 您不能启用/禁

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


无论用户设置如何,是否有办法启用宏

在我工作的公司里,我遇到过这样的情况。我们有一个系统,它使用excel表格在一系列中获取一个数字,作为设计工作的项目编号。用户们一直在互相抢夺,所以我写了一个宏来帮助减少问题,但是有些用户没有启用宏,所以导致了问题

您不能启用/禁用不好的宏,但可以给用户一个轻推

  • 首先,设置一个工作表,向用户解释如何启用宏(小免责声明),并解释确保它们只启用来自已知作者的宏的重要性
  • 接下来,使该工作表成为唯一可见的工作表
  • 使所有其他工作表
    真正隐藏
    ,当启用宏时,您可以
    取消隐藏
    工作表,并隐藏解释工作表
  • 如果他们已经启用了宏,他们将永远看不到解释页面

    以下是我使用的代码:

    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
    
    Private子工作簿\u关闭前(取消为布尔值)
    '步骤1:声明变量
    将ws设置为工作表
    作为变量的模糊结果
    '步骤2:取消隐藏起始页
    图纸(“开始”)。可见=xlSheetVisible
    '步骤3:开始循环浏览所有工作表
    对于此工作簿中的每个ws。工作表
    '步骤4:检查每个工作表名称
    如果ws.Name为“START”,那么
    '步骤5:隐藏工作表
    ws.Visible=xlVeryHidden
    如果结束
    '步骤6:循环到下一个工作表
    下一个ws
    '步骤7:保存工作簿
    活动工作簿。保存
    端接头
    私有子工作簿_Open()
    '步骤1:声明变量
    将ws设置为工作表
    '步骤2:开始在所有工作表中循环
    对于此工作簿中的每个ws。工作表
    '步骤3:取消隐藏所有工作表
    ws.Visible=xlSheetVisible
    '步骤4:循环到下一个工作表
    下一个ws
    '步骤5:隐藏起始页
    图纸(“开始”)。可见=xlVeryHidden
    端接头
    
    在我工作的公司里,我遇到过这样的情况。我们有一个系统,它使用excel表格在一系列中获取一个数字,作为设计工作的项目编号。用户们一直在互相抢夺,所以我写了一个宏来帮助减少问题,但是有些用户没有启用宏,所以导致了问题

    您不能启用/禁用不好的宏,但可以给用户一个轻推

  • 首先,设置一个工作表,向用户解释如何启用宏(小免责声明),并解释确保它们只启用来自已知作者的宏的重要性
  • 接下来,使该工作表成为唯一可见的工作表
  • 使所有其他工作表
    真正隐藏
    ,当启用宏时,您可以
    取消隐藏
    工作表,并隐藏解释工作表
  • 如果他们已经启用了宏,他们将永远看不到解释页面

    以下是我使用的代码:

    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
    
    Private子工作簿\u关闭前(取消为布尔值)
    '步骤1:声明变量
    将ws设置为工作表
    作为变量的模糊结果
    '步骤2:取消隐藏起始页
    图纸(“开始”)。可见=xlSheetVisible
    '步骤3:开始循环浏览所有工作表
    对于此工作簿中的每个ws。工作表
    '步骤4:检查每个工作表名称
    如果ws.Name为“START”,那么
    '步骤5:隐藏工作表
    ws.Visible=xlVeryHidden
    如果结束
    '步骤6:循环到下一个工作表
    下一个ws
    '步骤7:保存工作簿
    活动工作簿。保存
    端接头
    私有子工作簿_Open()
    '步骤1:声明变量
    将ws设置为工作表
    '步骤2:开始在所有工作表中循环
    对于此工作簿中的每个ws。工作表
    '步骤3:取消隐藏所有工作表
    ws.Visible=xlSheetVisible
    '步骤4:循环到下一个工作表
    下一个ws
    '步骤5:隐藏起始页
    图纸(“开始”)。可见=xlVeryHidden
    端接头
    
    否。否则,安全设置将毫无意义。(但是,我相信,您可以让网络管理员更改所有用户的设置,以允许“信任”某些目录中的工作簿。)因此用户设置总是覆盖Excel工作簿中的设置?如果是的话,我想唯一的解决办法是每个用户都将这本书变成一个受信任的文档。想象一下,如果只需要让感染病毒的工作簿说“我值得信任-忽略用户不信任我的愿望”,那么传播病毒将是多么容易。因此,是的,用户设置将始终优先于工作簿所述内容。我发现,如果您告诉用户更改设置的方式和原因,那么让用户更改设置是非常容易的。:)并向他们解释不要随意打开任何人(特别是公司以外的人)的excel文件。否则,安全设置将毫无意义。(但是,我相信,您可以让网络管理员更改所有用户的设置,以允许“信任”某些目录中的工作簿。)因此用户设置总是覆盖Excel工作簿中的设置?如果是的话,我想唯一的解决办法是每个用户都将这本书变成一个受信任的文档。想象一下,如果只需要让感染病毒的工作簿说“我值得信任-忽略用户不信任我的愿望”,那么传播病毒将是多么容易。所以,是的,用户设置总是优先于工作簿上的内容。我发现让用户更改设置非常容易