【问题标题】:Is there a way to show content of a word file only if macros are enabled?有没有办法仅在启用宏的情况下显示 word 文件的内容?
【发布时间】:2019-08-06 20:12:46
【问题描述】:

我希望客户只有在启用宏时才能看到文档。

我发现以下代码可以通过隐藏显示表在 excel 上运行,但找不到代码的“文字版本”。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With ThisWorkbook
        .Sheets("Request").Visible = xlVeryHidden
        .Sheets("Patching").Visible = xlVeryHidden
        .Sheets("SACM Attributes").Visible = xlVeryHidden
        .Save
    End With
End Sub

Private Sub Workbook_Open()
    With ThisWorkbook
        .Sheets("Request").Visible = True
        .Sheets("Patching").Visible = True
        .Sheets("SACM Attributes").Visible = True
    End With
End Sub

如果他想查看文档,我想“强制”客户启用宏,方法是隐藏文本并仅在他按下“启用宏”时才显示它,或者创建一个密码提示,要求他这样做(客户端将通过邮件或其他类似方式收到密码。

提前致谢, AVI。

更新: 使用@Gareth 的建议我想出了这个(在文本前面放置一张图片并按下启用内容来显示它):

Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="^g", _ ReplaceWith:="", Replace:=wdReplaceAll

我的问题是,如果图片不在默认布局中(如文本前面的正方形/),^g 无法识别它... P.S 我知道图片可以手动删除。

【问题讨论】:

  • 遗憾的是,我认为这不是 Word 中的选项(尽管我不是专家),但您可以在运行时通过 VBA 构建内容(或使文档有价值的部分)。 . 所以如果客户不启用宏,他就得不到他想要的。反转关闭文档的过程,但也可能添加一个保存前事件(如果有),以防止保存已经填充了您要隐藏的内容的文档。
  • 您无法像使用 Excel 那样做到这一点,并且记住 VBA 密码非常容易破解,您可以做几件事。一是让阅读文本变得非常困难。您可以在每个页面上放置整页图像,告诉用户启用宏并在打开宏运行时删除它们。或者你可以通过打乱它使文本难以阅读。 但是如果有人向我发送了一个带有 VBA 的 Word 文档,我将永远打开它,除非我 100% 确定它来自哪里以及代码做了什么。
  • @FAB 谢谢,我已经设法使用事件“Document_Open”和“selection.typetext text:=”进行编写,这不是最理想的结果,但它有效并且真的很近。
  • @Gareth 谢谢你,这是个好主意。我知道从未知来源打开文件的风险,尤其是运行代码的文件。

标签: vba ms-word


【解决方案1】:

也许:

Private Sub Document_Close()

ThisDocument.Range.Font.Hidden = True

End Sub

Private Sub Document_Open()

ThisDocument.Range.Font.Hidden = False

End Sub

保存在ThisDocument

它会在关闭文档之前隐藏所有内容。并在文档打开并单击启用宏后显示所有内容。

#Note - 这不等同于 Excel 的 xlveryhidden,如果用户知道如何在不运行宏的情况下显示数据,则可以撤消。

【讨论】:

  • 这只复制了您也可以手动执行的操作,并且用户很容易撤消...(如果他们有线索...)。
  • @FAB .. 是的..为此添加了一个注释:)
猜你喜欢
  • 2019-10-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 2018-01-27
  • 2015-12-11
  • 1970-01-01
相关资源
最近更新 更多