如何强制用户启用表中的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工作簿之前,请执行以下操作

  1. 插入一个新的行
  2. 增加行的高度
  3. 隐藏其余的行
  4. 在相关位置resize和移动图片

当你打开做与上述相反

  1. 取消隐藏其余的行
  2. 删除第一行
  3. 减小尺寸并将图片移动到工作表中最左侧的位置

重要

当您将图片放在图纸上时,右键点击图片并点击“格式图片”。 在“ 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

在这里输入图像说明