0

对于一家小公司,我为 PowerPoint 创建了一个带有几个 vba 宏的插件。它在我的机器和小公司的所有机器上都可以正常工作——除了一台。在该机器上,每次用户单击其中一个宏时,PowerPoint 都会崩溃。不管是哪个宏。现在他们问我,可能是什么原因。

好吧,我是如何理解事物的(请纠正我,如果我错了),因为每个用户都有相同的插件,所以问题必须在机器上,而不是在插件中,否则它应该在任何地方崩溃。发生故障的机器上一定有什么不同。现在我想为他们列出他们应该检查的内容。计算机的哪些部分可能会在 PowerPoint 和 vba 插件之间产生冲突?

首先,当然是 PowerPoint 本身。他们说,所有机器都有 2013。我已经在其他线程中发现,如果有人使用卡巴斯基安全软件,PowerPoint 2013 和 vba 插件可能会出现问题,但他们说没有。

他们说,所有机器都有 32 位版本的 Office 和相同的操作系统。

我会要求他们检查是否所有机器在服务包方面都具有相同的状态。

在崩溃的机器上,一开始安装了另一个插件,来自https://www.powerusersoftwares.com/的产品。但是在我们卸载了两个插件后,重新启动机器,然后只重新安装了我的插件,同样的问题仍然出现。每当用户尝试从我的插件运行其中一个宏时,PowerPoint 就会崩溃。

有没有人听说过这个高级用户工具和其他 vba 插件之间的冲突问题?

这是一个谜。但必须有所不同。我们还能检查哪些可能对 PowerPoint 和插件产生影响的内容?任何建议都可能有所帮助!

谢谢!

(我已经建议,可能是,他们必须在这台机器上修复整个 Office,但他们往往不相信,因为在他们安装我的插件之前问题并未发生。)

4

2 回答 2

1

宏必须从隐藏的演示文稿中复制内容。为了找到这个隐藏的演示文稿,我们使用Environ$("USERNAME") & "\AppData\Roaming\Microsoft\AddIns\" 了很明显,机器上的 USERNAME 定义不正确。我不知道。最后,将命令更改为

Environ$("appdata") & "\Microsoft\AddIns\"

一切正常。

于 2017-06-01T18:02:27.630 回答
1

从评论中跟进您的问题:

顺便说一句,有没有人知道在尝试避免使用“用户名”时访问桌面的方法?Environ$("desktop")不起作用 - 但也许有办法?

可以通过Wscript.Shell对象的SpecialFolders方法访问特殊文件夹:

Dim desktopPath 
With CreateObject("WSCRIPT.SHELL")
    desktopPath = .SpecialFolders("Desktop")
End With

根据 Ron de Bruin的说法,SpecialFolders包括:

  • 所有用户桌面
  • 所有用户开始菜单
  • 所有用户程序
  • AllUsersStartup
  • 桌面
  • 收藏夹
  • 字体
  • 我的文件
  • 网罩
  • 打印罩
  • 程式
  • 最近的
  • 发送至
  • 开始菜单
  • 启动
  • 模板

可能与您的原始问题有关(或至少,协助调试错误的来源):

当 PowerPoint 加载项中存在运行时错误时,默认 PowerPoint 配置会阻止用户进入“调试”模式。这可以通过向注册表添加 DWORD 来覆盖,请参阅此解决方案。您需要稍微修改 2013 与 2010 注册表路径。

于 2017-06-01T18:24:03.517 回答