ソフト開発塾 ActiveX EXEで、共有モジュールにする。 |
まず、新しいプロジェクトで、ActiveX.EXEを選びます。
すると、プロジェクト内に、1つクラスが作成されます。
プロジェクトとクラスのオブジェクト名を変更します。
(この名前が、外部から参照されるようになるため、非常に重要です)では、ここからサンプル
プロジェクトをTESTに変更します。
クラスをTESTCにします。
こんな感じになります。つぎに、TESTSにメソッドを作成します。
' メソッド
Public Sub Run()
Debug.Print "メソッド実行"
End Sub
これだと、ActiveXDLLとあまり違いがないので、
モジュールを追加します。
こんな感じになります。つぎに、モジュールに、コード(Sub Main)を書きます。(ここがポイント)
Sub Main()
If App.StartMode = vbSModeStandalone Then
Dim S As New TESTS
S.Run
End If
End Sub
これで完成、実行してみて下さい。 ?動かない??
プロジェクトのプロパティでスタートアップを確認してみましょう。
スタートアップをSub Mainにします。さあもう一度実行してみましょう。
?動かない??
もう一度、プロジェクトのプロパティで、
つぎは、コンポーネントを確認してみましょう。
スタートモードを独立型にします。さあ、再度実行してみましょう。
うまくいきましたか? 質問:でも、標準のEXEとの違いがよくわからない。
では、少し複雑になりますが、フォームを追加して確認できるように
プログラムを書きましょう。
こんな感じです。クラスのTESTSを修正します。
' メソッド
Public Sub Run()
Debug.Print "メソッド実行"
Dim F As New Form1
F.Show vbModal
End Sub
では、テストしておきましょう。 フォームは表示できたでしょうか?
では、コンパイルして、実行ファイル(EXE)を作成して下さい。
作成した実行ファイル(ここではTEST.EXE)を実行します。
フォームが表示できましたか?
では、このAvtiveXEXEを別のプログラムで起動してみましょう。
ここから、サンプルのAvtiveXEXEを動かすサンプル
あたらしいプロジェクト、標準EXEを選択します。
こんな感じになります。つぎに、フォームのコードに、プログラムを書きます。
Dim S As Object
Private Sub Form_Load()
Set S = CreateObject("TEST.TESTS")
S.Run
End Sub
実行してみて下さい。 フォームが表示されそれを閉じると、
もう一つのフォームが表示されます。解説:一つ目のフォームがActiveXEXEのフォームです。
わかりにくい場合は、フォームにラベルを張り付けるなどして
フォームを識別してみて下さい。
ActiveXEXEにする事で、EXEで持っている機能を
他のプログラムに公開することができます。どうでしょうか?
参考にした方は、広告ページも訪れてください。よろしくお願いします。