• ベストアンサー

VB.NETで起動したEXCELのシートに作成したCommandButtonのコードの記述について

 VB.NETからEXCELを起動し、シートにCommandButtonを作成しました。  このCommandButtonのコードをどこに記述すればいい のかわかりません。  初歩的な質問で申し訳ありませんが、どなた様か、よろしくご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.5

Withブロックの後に 「CommandButton1 = CType(ExlSheet.CommandButton1,MSForms.CommandButton)」 を挿入してもだめでしょうか?

keitakuna
質問者

お礼

takkunnet様 ありがとう御座いました。 御指導のとおりCommandButton1 = CType(ExlSheet.CommandButton1,MSForms.CommandButton)を挿入しましたら出来ました。 ここ一週間なやみに悩んでいたことがついに出来ました。いろいろなサイトなどで調べましたが、調べ方がまずいのかついに解りませんでした。 やっと解決です。感謝にたえません。謝謝!!!!

その他の回答 (4)

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.4

CommandButton作成までのソースを教えてもらえませんか?

keitakuna
質問者

補足

たびたび申し訳ありません。 Form1上のButton1でExcelを新規作成(MyFile)し、データを書き込みました。 Button5では、単にButton1で作成したExcelを呼び出すだけのものです。このときシートに動的CommandButtonを貼り付け、これをクリックすることにより、Excelを終了させようというものを作成したいのです。 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click ExlBooks = CType(ExlApp.Workbooks, Excel.Workbooks) ExlBook = CType(ExlBooks.Open(MyFile), Excel.Workbook) ExlSheets = CType(ExlBook.Worksheets, Excel.Sheets) ExlSheet = CType(ExlSheets.Item(1), Excel.Worksheet) ExlSheet.OLEObjects.Add("Forms.CommandButton.1", Left:=780, Top:=10, Height:=30, Width:=65) With ExlSheet.CommandButton1 .Caption = "×閉じる" .ForeColor = QBColor(12) .BackColor = QBColor(14) .Font.Size = 14 .Font.Bold = True End With ExlApp.Visible = True End Sub 同じホーム上に以下のとおり記述しました。 Private Sub CommandButton1_Click() Handles CommandButton1.Click ExlApp.Quit() End Sub Excelの開放などは別のForm1上のButtonに記述しています。 わかりぬくい説明で申し訳ありませんが、要するに既存のExcelを呼び出し、そのときCommandButtonを貼り付けそれをクリックすることにより、Excelを終了するとゆうものを作りたいのです。 よろしくお願いいたします。

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.3

波線の警告文は何でしょうか? また、 Private Sub CommandButton1_Click() Handles CommandButton1.Click ではだめですか?

keitakuna
質問者

補足

takkunnet様 お忙しい中たびたびのご回答まことにありがとうございます。 波線の警告文は次のとおりです。 「メソッド'CommandButton_Click'でイベント'Click'を処理できません。指定されているシグニチャが異なります。」 なお、御指導のとおり Private Sub CommandButton1_Click() Handles CommandButton1.Click     ExlApp.Quit() End Sub (とりあえずExcelを終了さすCommandButtonとした。Excelの開放は省略) 波線は消えましたがコマンドボタンをクリックしても状態の変化がありません。 お忙しい中まことに申し訳ありませんがよろしくお願いいたします。

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.2

WithEventsを付加した変数はFormにかかれましたか? そうすると通常の「From上のコントロール」と同様の方法でイベントが取れると思うのですが。。。

keitakuna
質問者

補足

takkunnet様 ご回答ありがとう御座います。 Form1に以下の変数を宣言しました。 Dim WithEvents CommandButton1 As MSForms.CommandButton そして以下のプロシージャを書きました。 Private Sub CommandButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommandButton1.Click しかし、最後のCommandButton1.Clickに波線が入り、先に進めません。 どうかよろしく御指導お願いいたします。

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.1

動的にCommandButtonを作成してそのボタンのイベントをとりたい場合には、「WithEvents」でコマンドボタンの変数を定義してやる必要があります。 <例> Private WithEvents cmdTest As MSForms.CommandButton また、この場合 Microsoft Forms 2.0 への参照設定が必要です。 ただ、その他たくさんの機能があるようでしたら事前に機能を持ったExcelを作成しておくことをお勧めします。 そうすれば、デバッグも簡単ですし、動作も比較的速いですし、開発も分散化が可能なので効率的になるためです。

keitakuna
質問者

お礼

早速のご回答ありごとう御座います。 これをヒントにいま少し考えて見ます。 今後ともよろしくお願いいたします。

keitakuna
質問者

補足

takkunnet様 先のご回答ありがとう御座います。 御指導のとおり、「WithEvents」でコマンドボタンの変数を定義し、Microsoft Forms 2.0 への参照設定を行いました。 しかし、ボタンのイベントを取る方法が解りません。どこにコードを書くのかが解りません。 よろしく御指導のほどお願いいたします。 開発環境は、VB.NET2003、Excel2003、OS WinXPです。

関連するQ&A