Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 编辑.ppam文件以自定义外接程序_Excel_Vba_Powerpoint - Fatal编程技术网

Excel 编辑.ppam文件以自定义外接程序

Excel 编辑.ppam文件以自定义外接程序,excel,vba,powerpoint,Excel,Vba,Powerpoint,我收到了一个powerpoint加载项作为.ppam文件,另一个Excel加载项作为.xslm文件。外接程序的工作非常好,但我想用一些内部要求对其进行定制 我的问题是-如何打开.ppam文件(据我所知是编译版本)背后的源代码以执行自定义。如果是ppam文件,则它是在PowerPoint中从另存为加载项的PPTM文件创建的 虽然您可以出于测试目的“就地”编辑加载的加载项,但不能编辑然后保存它们。但您可以导出外接程序的模块,然后将它们导入新的PPTM文件或在两者之间复制/粘贴代码 为了访问加载的加载

我收到了一个powerpoint加载项作为.ppam文件,另一个Excel加载项作为.xslm文件。外接程序的工作非常好,但我想用一些内部要求对其进行定制


我的问题是-如何打开.ppam文件(据我所知是编译版本)背后的源代码以执行自定义。

如果是ppam文件,则它是在PowerPoint中从另存为加载项的PPTM文件创建的

虽然您可以出于测试目的“就地”编辑加载的加载项,但不能编辑然后保存它们。但您可以导出外接程序的模块,然后将它们导入新的PPTM文件或在两者之间复制/粘贴代码

为了访问加载的加载项的模块/代码,您需要更改注册表

重要提示:先退出PowerPoint

然后转到:

HKEY\U当前用户\软件\ Microsoft\Office\14.0\PowerPoint\Options

(即2010年PPT;2016/365年PPT和2019年PPT用16.0代替14.0,2013年PPT用15.0,2007年PPT用12.0等等……没有13.0)

添加新的DWORD值:
DebugAddins=1

再次启动PPT;现在,加载的加载项将显示在VBA IDE中。如果它们没有密码保护,您将能够打开它们、出于测试目的进行编辑、导出模块或复制/粘贴以在新的PPTM文件中使用

确保导出您经常更改的任何模块;如果退出PPT或它崩溃,您将丢失自上次保存以来所做的任何更改。

如果您还想复制/修改自定义功能区 除了Steve Rindsberg的完美解决方案外,您还可以执行以下操作来传输自定义功能区属性:

  • 从Steve文章中描述的原始.ppam文件和修改后的.pptm文件开始。在下面,我将它们称为
    OLD.ppam
    NEW.pptm
  • 使用打开
    OLD.ppam
    NEW.pptm
  • NEW.pptm
    文件下,单击插入-->Office 2010+自定义UI部件,添加
    customUI14.xml
    条目
  • 将内容从
    customUI14.xml
    部分的
    OLD.ppam
    复制到
    NEW.pptm
  • 要获取图标,请使用7zip或类似工具在Windows资源管理器中提取
    OLD.ppam
    文件。您将在提取的文件夹
    OLD/customUI/
    中找到这些图像
  • 回到Office RibbonX编辑器,单击
    NEW.pptm
    中的
    customUI14.xml
    。然后,从“插入”菜单中插入图标。您可以一次选择所有项目
  • 在Office RibbonX编辑器中保存文件
    NEW.pptm
    ,然后将其关闭
  • 要创建外接程序,请在PowerPoint中打开
    NEW.pptm
    ,并将其另存为
    NEW.ppam

  • 您是否尝试过通过在PowerPoint中按“Alt+F11”并在“项目”窗口中搜索是否有加载项来打开IDE?如果它是用VBA创建的,你应该能够在那里找到它,并可能进行编辑…你是对的!当我使用Alt+F11时,在VBE IDE中找不到外接程序。这是否意味着外接程序不是在VB中创建的,或者我没有看到它是因为其他原因。每次打开演示文稿时,我都会加载加载项。它目前不在C:\Users\%USERNAME%\AppData\Roaming\Microsoft\AddIns中。它可以使用C#的VB.NET创建,但请选中它-通过单击左侧的十字/方形图标以添加名称,尝试展开project。此外,您可以在PP应用程序>>文件>>选项>>加载项中检查文件位置…当我点击Alt-F11时,实际上我甚至没有看到加载项,并且在左侧没有项目扩展方框!我知道文件的位置,在打开PP后双击.ppam文件以加载加载项。但是,我无法看到ppam文件背后的代码。抱歉,我是一个新手-我正在尝试自定义/创建和添加,它可以从外部脚本语言(如R/S-plusThanks Steve)更新PP中的注释和绘图!至少我现在可以看到代码了。我将开始定制代码,以满足我的要求!这是一个古老的答案,我知道。但你救了我的命。谢谢。顺便说一下,同样的技巧——某种程度上——在Mac PowerPoint中也有效。您可以更改PowerPoint的Prefs文件,而不是更改注册表。如果您熟悉PPT/Windows的常规reg设置,那么确定该设置与Mac的Prefs文件之间的对应关系并进行必要的更改并不太困难。值得注意的是,如果您在PowerPoint运行时创建该值并将其关闭,则会将DWORD重置为0。如果转到RegEdit并按F5更新值,则可以看到已进行了更改。只需在关闭所有PowerPoint实例后将其更改回1,然后重新打开即可。是的!谢谢你指出这一点,@brainslaugs83。PPT使用的大多数(如果不是所有)注册表项也是如此。它在启动时读取它们,在内部保存它们,然后在它们被更改或关闭时将它们写回,因此我们在运行时所做的任何更改都将被覆盖。