我有一个带有宏的模板,可以在点击按钮时验证数据。该模板只有一张纸,并且该文件中没有添加纸张(它应该只有一张纸)。现在,我要做的是,当文件打开而没有启用宏时,我需要显示一个图像,请启用其他明智的宏,无需显示。
非常感谢您提供任何帮助。
答案 0 :(得分:6)
如何强制用户在工作表中启用宏?
您的问题的答案是“您不能”
然而,这是Ken Puls的另一种选择,它可以很好地适合你的目的。
主题:强制用户在工作簿中启用宏
链接:http://www.vbaexpress.com/kb/getarticle.php?kb_id=379
来自该链接的语录
由于无法使用宏来打开宏,因此需要一种确保用户启用宏的技术。此特定方法隐藏除“欢迎”表之外的所有表,该表告诉用户启用宏,并在每次保存工作簿时强制执行。如果用户在启用了宏的情况下打开工作簿,则宏将全部取消隐藏工作表。使用Excel VeryHidden属性也可以隐藏工作表,这意味着无法使用Excel菜单取消隐藏工作表。但请记住,这只会影响此工作簿,因此用户可以使用其他工作簿中的宏取消隐藏所有工作表。但是,如果您的用户技术熟练,他们总是可以进入您的文件。注意:为防止出现某些事件循环问题,此代码需要重写Excel内置的Save事件,还需要复制Excel的“工作簿已更改,是否要保存”提示和操作。这段代码负责所有这些。但是,它在关闭文件时会产生一个非常小的问题。如果用户尝试退出应用程序,它将关闭工作簿,但不关闭Excel。再次退出将完全关闭Excel。
<强>后续强>
在关闭工作簿之前,请执行以下操作
当你打开时,执行与上面相反的操作
重要强>
将图片放在图纸上时,右键单击图片并单击“格式图片”。在Format Picture Dialog
中,选择Don't move or size with cells
并取消选中Print Object
关闭工作簿时的代码 - 应用上述链接中显示的相同概念
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"
替换为相关的图片名称。我在Cell A1
中显示图像。你可以通过调整Shape的.Top
和.Left
来修改它以显示你想要的图片。
如果MACRA被禁用则快照