2017-09-26 7 views
0

私はこのコードをspreadsheetguruから見つけました。コードの目的は、Excel 16.0ライブラリを有効にすることです。私はそれが自動的にライブラリを追加し、それを必要とするコードの残りの部分を実行するように、私のコードの前にこれを追加できるようにしたい。今、私は2つのサブシステムでそれを持っています。私がここに持っているプラ​​イベート・サブです。そして、次は私のマクロの残りの部分と一緒にパブリック・サブです。今すぐマクロを実行すると、ここでpsotというコードが実行されて停止します。その後、もう一度クリックすると、次のサブが実行されます。これをすべてワンクリックで行えるようにする方法はありますか?たぶん、それをすべて1つのサブ、または私が気付いていない他のプライベート/パブリックサブコンビネーションにすることによって?このコードをワンクリックで完全に実行するにはどうすればいいですか?

ありがとうございます!記事spreadsheetguru

Private Sub ActivateReferenceLibrary() 

'PURPOSE: Activate Specific Object Libraries 

'Error Handler in Case Reference is Already Activated 
    On Error Resume Next 

    'Activate PowerPoint Library (version 2.9) 
     Application.VBE.ActiveVBProject.References.AddFromGuid _ 
      GUID:="{00020813-0000-0000-C000-000000000046}", _ 
      Major:=0, Minor:=0  

'Reset Error Handler 
    On Error GoTo 0 

End Sub 
+1

あなたがこれまでに試してみましたか?他のSubからCall ActivateReferenceLibraryを試してみましたか?サブルーチンを呼び出すときのスコープに関する情報はここを参照してください。https://www.thespreadsheetguru.com/blog/2014/3/5/explaining-private-vs-public-declarations – QHarr

+0

投稿したコードは1つのコマンドしか実行しませんが、他に何もないので、なぜあなたはもっとそれをやろうとしていますか? – jsotola

+0

@QHarrこれらは私が試した3つの方法です:[ActiveReferenceLibraryからの呼び出し](https://pastebin.com/3Fk4DnnC)、[averageScoreRelayからの呼び出し](https://pastebin.com/7nVweNPr)、[呼び出しなしPublic Subs](https://pastebin.com/Eq1pqVjc)をクリックします。これらのどれも働いていません。彼らは私に次のようなエラーを出します:SubまたはFunctionが定義されていないか、User-defined typeが定義されていないか、エラーが表示されず、ActiveReferenceLibraryを実行して停止します。 – Pinlop

答えて

1

それは(サブActivateReferenceLibraryとして与えられた)ので、あなただけのサブにあなたのプライベートサブを変更する必要があります。その後、あなたの他のSubでは、私はaverageScoreRelayと呼ばれると思いますが、最初にこの行を書くでしょう: Call ActivateReferenceLibrary。 両方のSubルーチンが同じブックと標準モジュール(同じ標準モジュールに配置できる)にあることを確認してください。

いくつかのライブラリ参照はデフォルトであり、削除することはできません。別のエラーメッセージが表示されます。たとえば、Excel 2016を使用している場合、Excel 16.0オブジェクトライブラリは自動的にデフォルトで表示されます。これを以前のバージョンに追加したり、2016から削除することはできません(私は信じています)。

他のサブルーチンがどのように動作しているかわかるように、コードを投稿してください。そのようなあなたは、ある基準の依存関係を削除することができる場所、遅延バインディングなど

他のいくつかの解決策が、ここで議論されています VBA reference libraries

+0

私はまだ同じエラーを受けています。/ [ここに私のフルコードです](https://pastebin.com/gFDYTtAq)。私はPowerPointから始めてExcelに行くので、Excelライブラリが必要です。私は遅いバインディングを避けたいのですが、少なくとも遅いコードは遅くなります。しかし、ちょうど時間のほかに、私は実際にこの方法を働かせて試してみたいです。 – Pinlop

+0

あなたが追加したいライブラリリファレンスと特に使用しているMSオフィスのバージョンを確認できますか?MS Office 2016がインストールされている場合、Excel 2016オブジェクトライブラリはデフォルトで表示されます。 – QHarr

+0

私はオフィス365を持っており、Excel 16.0ライブラリを追加する予定です。 PowerPointから起動すると、デフォルトでPowerPoint 16.0のみが表示されます。 – Pinlop

関連する問題