use*_*518 2 excel vba excel-vba
我有一个带有宏的模板,可以在单击按钮时验证数据.该模板只有一张纸,并且该文件中没有添加纸张(它应该只有一张纸).现在,我要做的是,当文件打开而没有启用宏时,我需要显示一个图像,请启用其他明智的宏,无需显示.
非常感谢您提供任何帮助.
如何强制用户在工作表中启用宏?
你的问题的答案是" 你不能 "
然而,这是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
Run Code Online (Sandbox Code Playgroud)
打开练习册时的代码 - 应用与上面链接中显示的相同的概念
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
Run Code Online (Sandbox Code Playgroud)
注意:在上面的代码中,替换"Sheet1"为相关的表单名称并替换"Picture 1"为相关的图片名称.我在Cell中显示图像A1.您可以修改它以通过调整.Top和.Left形状显示您想要的图片.
如果MACRO被禁用,则快照

| 归档时间: |
|
| 查看次数: |
8372 次 |
| 最近记录: |