如何强制用户启用表中的macros?
我有一个带有macros的模板来validation点击button上的数据。 该模板只有一个工作表,并且没有在该文件中添加任何工作表(它应该只有一个工作表)。 现在,我要做的是,当文件打开时没有启用macros,我需要显示一个图像,请启用macros,其他明智的,不需要显示。
提前感谢您的帮助。
如何强制用户启用表中的macros?
你的问题的答案是“ 你不能 ”
然而,这是Ken Puls的另一个select,它适合你的目的。
主题 :强制用户在工作簿中启用macros
链接 : http : //www.vbaexpress.com/kb/getarticle.php? kb_id = 379
从这个链接引用
由于没有办法使用macros来打开macros,因此确保用户启用macros的技术是可取的。 这种特殊的方法隐藏了除了“欢迎”表格之外的所有表格,告诉用户启用macros,并且每次保存工作簿时都会执行该表格。 如果用户在启用macros的情况下打开工作簿,工作表将全部被macros取消隐藏。 使用Excel的VeryHidden属性也可以隐藏表单,这意味着不能使用Excel的菜单取消隐藏表单。 但请记住,这只影响此工作簿,因此用户可以使用另一个工作簿中的macros来取消隐藏所有工作表。 然而,如果你的用户是熟练的,他们总是可以进入你的文件。 注意:为防止某些事件循环问题,此代码要求取代Excel内置的保存事件,并且还要求复制Excel的“工作簿已更改,是否要保存”提示和操作。 这段代码负责所有这些。 但是,它closures文件时会产生一个非常小的问题。 如果用户试图退出应用程序,它将closures工作簿,但不是Excel。 退出将完全closuresExcel。
跟进
在closures工作簿之前,请执行以下操作
- 插入一个新的行
- 增加行的高度
- 隐藏其余的行
- 在相关位置resize和移动图片
当你打开做与上述相反
- 取消隐藏其余的行
- 删除第一行
- 减小尺寸并将图片移动到工作表中最左侧的位置
重要 。
当您将图片放在图纸上时,右键点击图片并点击“格式图片”。 在“ Format Picture Dialog
,select“ Don't move or size with cells
并取消选中“ Print Object
”选项
closures工作簿时的代码 – 应用上述链接中所示的相同概念
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"
replace为相关的图纸名称,并将"Picture 1"
replace为相关的图片名称。 我在单元格A1
显示图像。 您可以通过调整.Top
和.Left
的形状来修改该图像以显示您想要的图像。
如果MACRO被禁用,则为SNAPSHOT