2016-06-30 32 views
0

我正在创建一个PowerPoint插件的项目。这个概念是只包含一个用户表单和一个列表框。根据用户选择,其他模块(bas文件)将被添加或导入到演示文稿中,并且代码将被执行。将代码导入或添加到动态加载项

我不想将所有模块包含在添加中,这取决于需求我可以进行修改,然后可以存储在共享文件夹中。所以每次用户使用插件时,他们都可以拥有更新的版本。所以我不必在每次更改时重新加载插件。

我有一个空白模块,我从一个文本文件(保存为文本的bas文件中的代码)导入代码并运行。

我可以导入bas文件,也可以使用inserFrom文件选项我可以从文本文件导入代码,但问题是它总是被添加到当前的表示代码窗口中。但是我想将代码添加到插件代码窗格中。

我有一个名为“tempCode”的插件中的空白模块,我想更新导入的代码,但我无法这样做。

当我编辑插件作为ppt时,它工作正常,但是当我将ppt转换为插件时,该概念不起作用。

任何想法如何将代码添加到插件代码窗格而不是添加到活动的ppt。

代码细节:

我有一个用户的形式,用一个列表框。 它有3个项目。 选项1 选项2 选项3 如果用户选择任何选项,比如选项2,选项2的代码将从文本文件导入到工作模块。

和一个命令按钮来运行选定的。

工作模块的名称是“Mod_Working” 文本文件的名称是“C:\代码\ Option2.txt”

下面是我使用的代码:

Sub ImportSelected() 
With ActivePresentation.VBProject.VBComponents(“Mod_Working”).CodeModule 
    .DeleteLines 1, .CountOfLines 'it deletes any existing code 
    .AddFromFile “C:\Code\Option2.txt” 
End With 
End Sub 

Code in text file: 
Sub Test 
Msgbox “You selected Opt 2” 
End sub 

Code of Command Button: 
Private Sub Cmd_run_Click() 
    Application.Run “Mod_Working.Test” 
End Sub 

此作品在PPT模式,但不能转换为插件时使用。

+0

如果您显示您现有的代码,建议更改会更容易。但是,将加载项作为“存根”,然后从共享文件夹加载“真实”加载项可能更容易。这样它将始终保持最新状态,并且您还可以管理您可能创建的功能区项目的更改。 (确保将文件夹中的共享加载项标记为“只读”) –

+0

您是否已将注册表项设置为在Project Explorer中显示PowerPoint加载项? – ThunderFrame

+0

我正在使用的代码: Sub ImportSelected() With ActivePresentation.VBProject.VBComponents(“Mod_Working”)。CodeModule .DeleteLines 1,.CountOfLines“它删除任何现有代码 .AddFromFile‘C:\代码\ Option2.txt’ 尾随着 结束小组 码文本文件: 次测试 MSGBOX“您选择了选项2 ” 结束子 代码命令按钮: 私人小组Cmd_run_Click() Application.Run‘Mod_Working.Test’ 结束子 这个工作在PPT模式,但不是当转换成插件。蒂姆,你可以请解释存根概念位更多。 此外,我没有访问注册表,因为它是我的办公系统 –

回答

0

为什么不这样做: - 在共享文件夹中,将加载项文件标记为只读(右键单击属性)。这可以防止人们在使用加载项时正在使用该文件(至少在Excel中以这种方式工作) - 当您有更新时,只需更换加载项并将其重新设置为只读。

或者,退房:www.jkp-ads.com/articles/updateanaddin.asp

+0

谢谢......但我想保持程序动态,我只是将代码转储到一个文件夹中,并根据它的内容,表单应显示列表并执行。我想用的形式只是作为一个午餐垫,插件应该能够在线调用代码而不是包含代码。它将处理的文件非常动态,格式也发生了很大变化。所以我想要这个概念,如果有任何错误,我将调试n存储在文件夹中,用户只需重新加载表单。反正有可能吗? –

+0

确实可以导入模块,但是您必须更改所有相关用户的Excel安全设置(允许访问VBAproject)。 – jkpieterse

+0

是的,我想通了,但在这里我试图导入插件内的模块或代码。 –