2017-01-25 4 views
2

Powerpointを参照する1つのモジュールを含むExcelファイルを作成しました。アプリケーションがインストールされていないコンピュータで「プロジェクトやライブラリが見つかりません」を避ける

Powerpointがインストールされていないサーバー(長文...)にこのファイルの他のモジュールを使用したいのですが、恐れることなくこれを行うことはできませんプロジェクトまたはライブラリが見つかりませんエラーメッセージ。

もちろん、問題のあるモジュールを削除して別のバージョンを作成することはできますが、明らかに問題ありません。
しかし、これをやりたくない理由はいくつかあります。私がそれを手助けすることができれば、私は本当に複数のバージョンを維持したくないということだけではありません。

これを回避する方法はありますか? Excelにこのモジュールを無視させ、それが呼び出されない限りコンパイルしないようにしますか?

私は不可能なことを尋ねていると思わせる何かを助けるものを見つけることなく、このトピックのstackoverflow上の41の記事を通して歩いている。

レイトバインディングが役立つかもしれないという提案がいくつかありますが、違いはありません。問題のコードは次のとおりです。

他のどのモジュールもPowerpointを参照していません。

+0

あなたは単に犯人行をコメントできますか?または、これらを別のコンピュータで使用していますか? – R3uK

答えて

2

これを回避する方法はありますか。 Excelにこのモジュールを無視させ、それが呼び出されない限りコンパイルしないようにしますか?

あなたはそれはそれがないまさにかなりのだ、条件付きコンパイルを試みることができます。

プロジェクトのプロパティダイアログを開き、プロジェクトレベルの条件付きコンパイル定数を定義します。

Project Properties dialog

#Ifディレクティブでパワーポイント依存モジュールをラップ:

Option Explicit 
#If HAS_POWERPOINT = 1 Then 
'... entire module body ... 
#End If 

次に、条件付きコンパイルされたモジュールを呼び出すコードがあるところで、それをで囲みますのディレクティブ:PowerPointがインストールされていないマシンにマクロを配布する際に

#If HAS_POWERPOINT = 1 Then 
    MyProcedureThatRunsOffPowerPoint "foo", "bar", 42 
#Else 
    'PowerPoint-dependent module doesn't exist, what do we do instead? 
#End If 

は今、あなたは、プロジェクトを再コンパイルし、0に定数をプロジェクトのプロパティに移動し、設定します。

+0

多くのありがとう。これはちょうど私が後になっているように見えます。私は明日これをテストします。 – Knackiedoo

+0

異なるバージョンのExcel、64/32ビットタイプのものを使用している場合、私は条件付きコンパイルについて知っていました。しかし、プロパティの議論オプションについては知りませんでした。 Excelで18年、まだ学習。乾杯。 :) –

+2

@ DarrenBartrup-Cookでは、モジュールレベルのプリコンパイラ定数を '#Const'で定義することもできます。 '#Const DEBUG_MODE = 1'。私の[Rubberduck](http:// rubberduckvba。com)addin残念ながら、プロジェクトレベルの定数は表示されません(彼らはVBIDE APIのどこにもいません!)が、 "dead code"(オフの '#If'ディレクティブ)を正しく評価して無視します。だからもしあなたがRubberduckを使っているのであれば、プロジェクトレベルの定数の代わりに '#Const'ディレクティブを使うほうが良いでしょう。 –

関連する問題