【问题标题】:Is it possible to run a VBA macro in a READ-ONLY protected PowerPoint?是否可以在只读保护的 PowerPoint 中运行 VBA 宏?
【发布时间】:2018-08-30 01:12:00
【问题描述】:

我和我的同事已经进行了六个月的探索,寻找可以在只读、受密码保护的 PowerPoint 中运行的 VBA 宏。

由于只读状态,PowerPoint 是否可能或将始终阻止 VBA 宏在演示文稿中运行?

Private Sub CheckBox1_Click()
Dim ppShp As Shape
Dim eff1 As Effect
Dim ani1 As AnimationBehavior
With ActivePresentation.Slides(1)
    Set ppShp = .Shapes("Oval 4")
    Set eff1 = .TimeLine.MainSequence.AddEffect(Shape:=ppShp, effectId:=msoAnimEffectAppear)
End With

End Sub

我尝试使用If ReadOnly = True Then 条件。

我希望用户使用宏并保存,但不要在此之外进行编辑,或者打开并“深入了解”。

(都是为了教育项目)

我们得到

运行时错误“-2147467259 (80004005)”
演示文稿(未知成员):无效请求。无法修改演示文稿。

【问题讨论】:

  • 你知道密码吗?如果不是,那么不,你当然不能用它做任何事情
  • 感谢您的回复。是的,这是我自己的密码和PPT。虽然我想为没有也不会拥有密码的人制作它。我希望他们使用宏,但不解锁。
  • 先看看你的代码能不能在没有密码的非只读PPT上工作。宏 inside 是只读密码保护文档,还是外部的? ready/only 和 pwd 保护不是严重的保护。很容易破解
  • 是的,否则宏可以工作。它是内部的,因为它可以在开发人员选项卡 VBA 编码视图表中查看。有没有办法通过使 VBA 代码外部化来完成我所追求的目标??
  • 是的,你可以让你的代码外部化。例如,您可以创建一个已编译的 VB6 应用程序。您可以在 .Net 中创建(使用 COM 互操作)。您可以在 VBScript 中执行此操作。您可以将其放在单独的 Excel 文件中。任何可以使用 COM 对象的语言。那么是导致错误的只读方面还是密码方面?缩小范围。您应该了解,克服 Office 密码保护是微不足道的。这不是真正的保护方法。

标签: vba powerpoint readonly


【解决方案1】:

也许作为一种解决方法,您可以保存原始只读演示文稿的副本,在新版本上运行宏,然后将新版本保存为只读?

【讨论】:

  • 感谢您的回答。问题是我想让别人用PPT。要运行它并使用其中的宏,甚至保存,但不解锁,无法打开编辑模式。可以设置 VBA 代码以允许在只读文件中运行吗?我不知道...
  • 我不知道这是可能的,其他人可能会提供帮助。当然,如果您详细说明为什么以这种方式这样做如此重要,则可能会有另一种选择。例如,如果你不想让别人知道密码,你可以使用宏输入密码,做你想做的事,然后再锁定。
  • 简而言之,这是一种我们将要销售的教育游戏(有点)。我们已经许可了其中的大部分视觉内容,但如果 ppt 没有被锁定,我们将违反我们的许可合同(因为其他人将能够提取其中的内容)
  • 所以可以说...点击一个按钮,使用密码运行 VBA 宏,然后自动锁定它?问题是,当玩家使用 ppt 时,我不会在附近。所以这一切都必须是自动的。无论采用何种方法,它都不能依靠我在那里手动“锁定”它备份。宏必须在无法在编辑模式下打开的 ppt 中自行更改 ppt(嗯……在编辑模式下不能合法打开)
  • 我明白了。是的,可以按照您刚才的描述进行操作,但无论这是否违反您的许可合同,我都不想发表评论。最终,要执行您描述的操作,密码必须存储在您的宏中或非常隐藏的工作表中。
【解决方案2】:

您好,这可能为时已晚,但如果我理解正确,您希望其他用户可以阅读、执行宏但不能阅读其背后的代码。保存应该没问题。

  1. 您使用的宏应受密码保护。首先进入编辑器,选择宏并查看属性/保护并设置密码
  2. 完成后,关闭文件。右键单击文件/属性并检查只读。然后,用户将可以访问该宏,但无法查看其背后的代码并可以保存它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多