2016-06-30 64 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

是的,我想通了,但在這裏我試圖導入插件內的模塊或代碼。 –