• ベストアンサー

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

  • VB.NETで起動したExcelの閉じ方について

    VB.NET(2003)でExce(2003)を起動し、そのシートに動的コマンドボタンを貼り付けました。 このコマンドボタンには、Excelを閉じ、COMオブジェクトの開放を行うコードを記述しています。 これでうまくExcelは閉じることが出来き、Excelのプロセスも残らないのですが、直接Excelの[×]閉じるボタンで閉じるとExcelのプロセスが残ってしまいます。 これを防止するにはどのようにすればよいでしょうか? どうかよろしく御教示ください。

  • VB.netでEXCEL起動がうまくできないのですが

    VB.netでEXCEL起動がうまくできないのですが 原因は何が考えられますでしょうか? ※この質問は過去にしていますが解決していないため再投稿になります。 現在、VB.net2008でデータをエクセルに吐き出し、そのエクセルを表示するという仕組みを作成しております。 作成当初は問題なくエクセルは開いていたのですが、突然開かなくなり、エクセルのタイトルバー、 メニューバー、ステータスバーのみの表示になってしまいます。 私のPCでは現状でも開くのですが、1部(1台)のPCで、このような状況にあります。 エクセルデータの作成→セーブ→エクセルを開く の手順で行っているのでデータはセーブされているのですが開かなくて困っております。 OS:WindowsXP EXCEL:EXCEL2000 非常に困っています。 よろしくお願いいたします。

  • VB6 からEXCEL起動をブロックする方法

    VB6を使用してEXCELを開き色々コントロールするプログラムを作成したのですが、EXCELをプログラムからでなく、単独で起動してしまうとVB6から開いたEXCELのコントロールに悪影響を与えてしまうようです。 そこで、VB6で作成するプログラムの中にEXCELを単独で起動出来ないようにブロックするコードを入れられないかと考えています。 良い方法がありましたらご教授下さい。

  • vb.netでEXCEL起動がうまくできないのですが原因は何が考えられ

    vb.netでEXCEL起動がうまくできないのですが原因は何が考えられるでしょうか? VB.NETでEXCELのファイルを作成し、その後、 System.Diagnostics.Process.Start("C:\Test.xls") でファイルを開こうとすると、Excelのタイトルバー、メニューバー、ステータスバーのみ表示 された状態で、内容が表示されません。(Windowsの背景が表示された状態) この状態でもファイルは正しく保存されています。 以前は開けていたようなのですが、最近は100%開けないようです。 これはメモリ不足が原因なのでしょうか? メモリは確か1G程度しかなかったと思います。 お願いいたします。 OS:WindowsXP SP3 VB:VB.Net2008 Excel:Excel2000

  • Excelのシート上にtextboxを作成する方法

    VB.netのコードからExcelのシート上にtextboxを作成する方法を教えてください。 新規シートを作成するところまでは自力で出来ています。 どなたかアドバイスお願いします。 ※参考ページなどありましたらお願いします。

  • [EXCEL VB]入力規則、フォーム読み出しの方法

    教えてください。 (1)入力規則について [TextBox]に「yyyy/mm/dd」以外の書き方や入力を行い [CommandButton]を押した場合はメッセージボックスを表示する というVBの表記の方法を教えてください。 (2) EXCELシート状にある、[CommandoButton]を押すと [UserForm]を呼び出す というVBの表記の方法を教えてください。 初歩的なことを質問してすみません。 また、VBの初歩的なアドバイスや方法、サンプルが記載されたような ページがあれば、教えてください。

  • [EXCEL VB] UserForm内でデータクリアー

    EXCEL VBで教えてください。 UserForm内に[TextBox]と[CommandButton]があります。 [CommandButton]を押下すると[TextBox]に表示されている データをClearする関数(モジュールシートの書き方)を 教えてください。

  • VB.NETで起動させたExcelの多重起動を禁止させるには?

    VB.NETで起動させたExcelの多重起動を禁止させるには? [前提条件] VB.NETには、「Excelを起動させるボタン」と「Excelを終了させるボタン」があるとします。 「Excelを起動させるボタン」によって既存のExcelファイルを起動させ、 「Excelを終了させるボタン」によって起動中のExcelファイルを終了させたいと思います。 Excelを起動している最中は、VBとExcelとでデータの受け渡しをします。 [問題・課題] この方法ですと、「Excelを起動させるボタン」を押下するたびに、同じ既存のExcelファイルを多重起動されてしまいます。 ネット上にある参考文献を調べると、ひとつの関数(?)内で アプリケーション open ⇒ データの吸出し  ⇒ アプリケーション close となっていました。 [前提条件]で述べている使い方で、実現可能な方法があれば教えてください。 (参考になりそうなWebアドレスだけでも構いません) 以上、よろしくお願いします。

  • VBからエクセルファイル作成

    VBでエクセルファイルを作成する処理を作っていて、ファイルは作成されるのですが、自動的にシートが3シート作られます。 作成時にシート数を指定することはできるのでしょうか? ネットでいろいろ調べるのですが、VBからのエクセル操作について書かれているサイトがあまりみつかりません。 よいサイトがありましたら、あわせて教えてください。 よろしくお願いします。

  • vb の errorコード

    vb の errorコード:13は (1)何のエラーでしょうか? (2)エラーコードから、エラー内容を検索したい場合はどのようにすればいいのでしょうか? 初歩的な質問で申し訳御座いません 教えて下さい