Vba 如何强制用户在工作表中启用宏?
我有一个带有宏的模板,可以在单击按钮时验证数据。该模板只有一张图纸,但没有在该文件中添加图纸(它应该只有一张图纸)。现在,我要做的是,当文件在没有启用宏的情况下打开时,我需要显示一个图像,请启用宏,否则无需显示 事先非常感谢您的帮助 如何强制用户在工作表中启用宏 你的问题的答案是“你不能” 然而,这里有一个由肯·普尔斯(Ken Puls)设计的替代方案,它将很好地满足您的需求 主题:强制用户在工作簿中启用宏 链接: 引用那个链接 由于无法使用宏打开宏,因此需要一种确保用户启用宏的技术。此特定方法隐藏所有工作表,但“欢迎”工作表除外,该工作表告诉用户启用宏,并在每次保存工作簿时强制执行。如果用户在启用宏的情况下打开工作簿,则宏将取消隐藏所有工作表。还可以使用Excel VeryHidden属性隐藏工作表,这意味着不能使用Excel的菜单取消隐藏工作表。但是,请记住,这只会影响此工作簿,因此用户可以使用其他工作簿中的宏来取消隐藏所有工作表。然而,如果你的用户是那么熟练,那么不管怎样,他们总是可以进入你的文件。注意:为了防止某些事件循环问题,此代码需要否决Excel内置的保存事件,还需要复制Excel的“工作簿已更改,是否要保存”提示和操作。这段代码处理了所有这些。但是,在关闭文件时确实会产生一个非常小的问题。如果用户试图退出应用程序,它将关闭工作簿,但不会关闭Excel。再次退出将完全关闭Excel 跟进 在关闭工作簿之前,请执行以下操作Vba 如何强制用户在工作表中启用宏?,vba,excel,Vba,Excel,我有一个带有宏的模板,可以在单击按钮时验证数据。该模板只有一张图纸,但没有在该文件中添加图纸(它应该只有一张图纸)。现在,我要做的是,当文件在没有启用宏的情况下打开时,我需要显示一个图像,请启用宏,否则无需显示 事先非常感谢您的帮助 如何强制用户在工作表中启用宏 你的问题的答案是“你不能” 然而,这里有一个由肯·普尔斯(Ken Puls)设计的替代方案,它将很好地满足您的需求 主题:强制用户在工作簿中启用宏 链接: 引用那个链接 由于无法使用宏打开宏,因此需要一种确保用户启用宏的技术。此特定方法
格式化图片对话框
中,选择不移动或不使用单元格调整大小
,然后取消选中显示打印对象
关闭工作簿时的代码-应用上述链接中所示的相同概念
Dim shp As Shape
With Sheets("Sheet1")
.Rows(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Rows(1).RowHeight = 300
.Rows("2:" & .Rows.Count).EntireRow.Hidden = True
Set shp = .Shapes("Picture 1")
With shp
.Top = Sheets("Sheet1").Range("A1").Top
.Left = Sheets("Sheet1").Range("A1").Left
.LockAspectRatio = msoFalse
.Height = 100
.Width = 100
End With
End With
Dim shp As Shape
With Sheets("Sheet1")
.Rows("1:" & .Rows.Count).EntireRow.Hidden = False
.Rows(1).Delete
Set shp = .Shapes("Picture 1")
With shp
.LockAspectRatio = msoFalse
.Height = 0
.Width = 0
.Top = Sheets("Sheet1").Range("A1").Top
.Left = Sheets("Sheet1").Range("IV1").Left
End With
End With
打开工作簿时编码-应用与上述链接中所示相同的概念
Dim shp As Shape
With Sheets("Sheet1")
.Rows(1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Rows(1).RowHeight = 300
.Rows("2:" & .Rows.Count).EntireRow.Hidden = True
Set shp = .Shapes("Picture 1")
With shp
.Top = Sheets("Sheet1").Range("A1").Top
.Left = Sheets("Sheet1").Range("A1").Left
.LockAspectRatio = msoFalse
.Height = 100
.Width = 100
End With
End With
Dim shp As Shape
With Sheets("Sheet1")
.Rows("1:" & .Rows.Count).EntireRow.Hidden = False
.Rows(1).Delete
Set shp = .Shapes("Picture 1")
With shp
.LockAspectRatio = msoFalse
.Height = 0
.Width = 0
.Top = Sheets("Sheet1").Range("A1").Top
.Left = Sheets("Sheet1").Range("IV1").Left
End With
End With
注:在上述代码中,用相关图纸名称替换“Sheet1”
,并用相关图片名称替换“Picture 1”
。我正在单元格A1
中显示图像。您可以通过调整形状的.Top
和.Left
来修改该选项,以便在任何需要的地方显示图片
禁用宏时的快照
如果您可以强制用户启用宏,那么坏人可以强制用户运行恶意宏。感谢您的快速响应,如何解决此问题。请帮助……感谢Siddharth在解决问题时给予的支持。但我的文件中只有一张纸,没有要添加到该文件中的纸。在给定的示例中,我们需要再添加一张图纸。请帮助在一张工作表中完成同样的操作。感谢增加第1行的高度(隐藏其余行)并显示图像,如果启用了宏,则将高度降低到正常值,并将图像移动到工作表的最右侧。如果你想举个例子,请告诉我,请举个例子。谢谢。你想显示一个图像还是一条信息就足够了?我设计了一个图像显示“请在你的模板上启用宏”。我需要显示该图像,如果宏被禁用,否则它应该消失。