2016-06-30 5 views
0

私はPowerPointアドインを作成したプロジェクトで作業しています。つまり、これはリストボックスを持つユーザーフォームのみを含むということです。ユーザの選択に基づいて、他のモジュール(ベースファイル)がプレゼンテーションに追加またはインポートされ、コードが実行されます。アドインにアドインを動的にインポートまたは追加する

要件に応じてすべてのモジュールをアドインに含める必要はありません。変更を行い、共有フォルダに保存することができます。したがって、ユーザーがアドインを使用するたびに、更新されたバージョンを持つことができます。だから私はすべての変更でアドインを再循環させる必要はありません。

テキストファイル(テキストとして保存されたベースファイルのコード)からコードをインポートして実行するブランクモジュールがあります。

私はテキストファイルからコードをインポートすることができますが、inserFromファイルオプションを使用して、基本ファイルをインポートできますが、問題は常に現在のプレゼンテーションコードウィンドウに追加されています。しかし、コードをaddinコードペインに追加したいと思います。

アドインに「tempCode」という空白のモジュールがありますが、インポートされたコードを更新したいのですが、これを行うことはできません。

アドインをpptとして編集しているときにうまく動作しますが、pptをアドインに変換するとコンセプトは機能しません。

アドインコードペインにどのようにコードを追加して、アクティブなpptに追加することができますか。

コードの詳細:

私はリストボックスで、ユーザーフォームを持っています。 には3つのアイテムがあります。 オプション1 オプション2 オプション3 ユーザーが任意のオプションを選択した場合は、オプション2のコードをテキストファイルから作業モジュールにインポートします。

そして、選択したものを実行するコマンドボタン。以下は

は、私が使用していたコードです:

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 

をこれはで動作します。作業モジュールの

名は「Mod_Working」テキストファイルの 名前が「\コード\ Option2.txt C」でありますpptモードになりますが、addinに変換されたときは表示されません。

+0

既存のコードを表示すると、変更を提案しやすくなります。ただし、アドインを共有フォルダから「実際の」アドインをロードする「スタブ」にするほうが簡単かもしれません。こうすることで、常に最新の状態になり、作成するリボンアイテムの変更を管理することもできます。 (フォルダ内の共有アドインに「読み取り専用」としてタグを付けてください) –

+0

プロジェクトエクスプローラでPowerPointアドインを表示するためにレジストリキーを設定しましたか? – ThunderFrame

+0

私が使用しているコード: Sub ImportSelected() With ActivePresentation.VBProject.VBComponents( "Mod_Working")。CodeModule .DeleteLines 1、.CountOfLines「は既存のコード .AddFromFile 『C:\コード\ Option2.txt』削除テキストファイルに End Subの コードで 終了します。MsgBox「あなたはオプト2選択 小テスト」コマンドボタンの End Subの コード: ます。Private Sub Cmd_run_Click() Application.Run 『Mod_Working.Test』 End Subのこれは、PPTモードで動作しますが、アドインに変換されないとき 。 Tim、スタブの概念のビットをもっと説明してください。 また、私はオフィスシステムのようにレジストリにアクセスすることはできません –

答えて

0

どうすればいいですか? - 共有フォルダで、アドインファイルを読み取り専用(右クリック、プロパティ)としてマークします。これにより、ユーザーがアドインを使用しているときにファイルが使用されないようになります(少なくともExcelではその方法で動作します)。 - 更新プログラムを入手したら、アドインを置き換えて、再度読み取り専用に設定します。

www.jkp-ads.com/articles/updateanaddin.asp

+0

ありがとうございます...しかし、私はプログラムを動的にしたい、私はちょうどフォルダにコードをダンプし、その内容に応じて、フォームは、リストを表示し、実行する必要があります。私はちょうどランチパッドとアドインとしてコードを含むよりもむしろコードを呼び出すことができる必要がありますように使用するフォーム。それが扱うファイルは非常に動的であり、フォーマットの変更は多くあります。だから私はコンセプトを望んでいます、もし何かエラーがあれば、私はフォルダ内のn個のストアをデバッグします。ユーザーはフォームをリロードするだけです。それはとにかく可能ですか? –

+0

実際にモジュールをインポートすることは可能ですが、関連するすべてのユーザーのExcelセキュリティ設定を変更する必要があります(VBAプロジェクトへのアクセスを許可する)。 – jkpieterse

+0

はい、私はそれを考え出しましたが、ここではアドイン内でモジュールまたはコードをインポートしようとしています。 –

関連する問題