- ベストアンサー
EXCEL VBAから、VBのフォームを開くためには?
EXCEL VBAからVBへプログラムを移そうと努力しています。 そこで、エクセルのシートのコマンドボタンを押すと、 VBで作成したフォームが開き、そこからEXCELの処理を させたいと考えています。 VBからエクセルの処理は Excel.Application のあたりをつかうことでなんとかなりそうなんですが その逆がわからず行き詰まっています。 EXCELは2000 VBは6.0 です ご存じの方、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBでExcelを用いる場合にはCreateObjectを用いて開発するのですが この方が慣れると楽ですし、実行時の処理速度も速いです。 後、機能追加がある場合に開発手段が増えます。
その他の回答 (3)
- mar0325
- ベストアンサー率88% (8/9)
EXCELのVBAとVBの連携を使用されているみたいですがすべてVBで開発されるのはどうですか?
補足
回答ありがとうございます。 本当はそのようにするのがBESTなんですが 私のスキル不足から、そこまで至っておりません。 OLEコンテナを利用して、VB内でExcelを コントロール使用としたのですが、思うように できず、あきらめてしまいました。 Excelのメニューバーに自分で作成したコントロールを 登録したような感じにしたいのですが OLEコンテナを使うと編集の時、Excel独自の メニューバーもでてきてしまうことと、ワークシートのサイズが 制限されてしまうことがうまく解決できませんでした。 理想は、エクセルが画面いっぱいに表示し、その前面にVBのフォームが常に 表示され、そこからワークシートの処理をさせることができるといいなと 思っています。 そうなるとVBとVBAの連携が必要なのではないでしょうか? VBだけで解決できる道はあるんでしょうか?
- todo36
- ベストアンサー率58% (728/1234)
> xlstest.xlsのseet1上のボタンを押すと、VBtest1内のfrmSeet1が開く。 参考URLの方法で、VB側でExcel上のボタンのクリックイベントを認識できるかも
お礼
出張で4日ほどチェックができなくてお礼が遅くなりました。 そういう方法もあるんですね。 一度チャレンジしてみます。
- nishi6
- ベストアンサー率67% (869/1280)
>VBで作成したフォームが開き Project1.exeでそのフォームが開くとすると、 'Excelの、シートのコードウインドウに貼り付けたコード Private Sub CommandButton1_Click() Call Shell("D:\・・・\・・・・\Project1.exe", vbNormalFocus) End Sub で開くのでは?vbNormalFocusは好みです。こういう意味だったのでしょうか。 VBは持っていないので確かめていませんが『メモ帳』を指定したら開きました。(Excel2000です)
補足
早速の回答ありがとうございます。 この方法ですと、起動していないプログラムを 起動することになりますよね。 そうではなくて、 エクセルのシート上にあるボタンを押すと すでに起動しているVBのプログラム上の シートに対応したフォームがでてくるようにしたいんです。 流れとしては、 1 VBで作ったプログラム「VBtest1.exe」(c:\test\)を起動 2 VBtest1.exe内のfrmMainから、エクセルのxlstest.xlsを起動 3 xlstest.xlsのseet1上のボタンを押すと、VBtest1内のfrmSeet1が開く。 3-1 xlstest.xlsのseet2上のボタンを押すと、VBtest1内のfrmSeet2が開く。 とこんな感じにしたいのです。 このような方法を実現する方法がありましたら教えてください。
お礼
なるほど CreateObject というものを初めて知りました。 もう一度勉強し直してチャレンジしてみようと思います。 今回はこれで一度締め切ろうと思います。 また行き詰まった時には質問すると思いますので、そのときには またよろしくお願いします。 よいアドバイスありがとうございました。