VB.NETで起動させたExcelの多重起動を禁止させる方法

このQ&Aのポイント
  • VB.NETでExcelを起動させる際に多重起動を禁止する方法について紹介します。
  • 既存のExcelファイルを起動させる際に多重起動されないようにする方法を解説します。
  • VB.NETとExcelのデータの受け渡しを行いながら、多重起動を防止する方法について紹介します。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • linelan
  • ベストアンサー率81% (13/16)
回答No.3

 こんばんは、No.1です。 >何とか、識別をしているようです。 お、いけそうですね。 >ところで、最後の行 >MRComObject(ProGet) >は、何ですか? VB花ちゃんにのっています。 ↓のアドレスのExcel・Word・他(30)の中 http://hanatyan.sakura.ne.jp/dotnet/index.html Excelのプロセス開放コードです。 >それと、質問漏れをしていましたが、Excelのプロセスを開放する方法を御存知でしたら、教えてください。 沢山あるので、ここでは少し難しいですねー。。  一瞬で手に入るスキルでもないので、下の順序で進めるのがおそらく 一番早いかも。  まずは宣言の書き方をミスった時点でアウトになるので、上のページにある 宣言方法にすべて書き直して下さい。  次に宣言文以外のコードをすべて消す→実行      →解放されなければ宣言文再確認 or ここに新規質問で再投稿  解放されるようになったら、宣言以外のコードを少しずつ加えていって、 都度解放確認。  あと、VB中学校 http://homepage1.nifty.com/rucio/main/technique/teq_15.htm も丁寧にまとめて下さっているのでお勧めです。  頑張ってb

xcode_15
質問者

お礼

御丁寧な回答に、感謝します。 デバッグモードで、MRComObjectの行を実行しても終了しなかったので 困っていました。 これで、プロセス終了まで出来る様になりました。 重ねて、感謝します。

その他の回答 (2)

  • unicoun
  • ベストアンサー率50% (1/2)
回答No.2

少しでも参考になればと思います。

参考URL:
http://www.atmarkit.co.jp/fdotnet/dotnettips/145winmutex/winmutex.html
xcode_15
質問者

お礼

ありがとうございます。 mutexを試してみましたが、Excelを認識してくれませんでした。 単に、私の組み込み方が悪かったかもしれません。 情報提供に、感謝します。

  • linelan
  • ベストアンサー率81% (13/16)
回答No.1

 こんにちは。Excelが起動しているかどうかを調べる、とかはありでしょうか?     Dim ProGet As Object = Process.GetProcessesByName("EXCEL")     If ProGet.Length > 0 Then       Msgbox("起動しているExcelを終了してから再度実行してください。")       Exit Sub     End If     MRComObject(ProGet) 少しでもお役に立てば。

xcode_15
質問者

補足

ありがとうございます。 何とか、識別をしているようです。 ところで、最後の行 MRComObject(ProGet) は、何ですか? 当方のVBでは、認識されませんでした。 それと、質問漏れをしていましたが、Excelのプロセスを開放する方法を御存知でしたら、教えてください。

関連するQ&A

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

    VB.NET(2003)でExce(2003)を起動し、そのシートに動的コマンドボタンを貼り付けました。 このコマンドボタンには、Excelを閉じ、COMオブジェクトの開放を行うコードを記述しています。 これでうまくExcelは閉じることが出来き、Excelのプロセスも残らないのですが、直接Excelの[×]閉じるボタンで閉じると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

  • VB.NETでの多重起動禁止設定方法

    VB.NETでの多重起動禁止設定方法が分かりません。 ヒント、サンプルなどありましたら教えてください。

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

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

  • VB.NETでのEXCELファイルの閉じ方

    VB.NETのプログラミングで開いているEXCELファイルを終了させるため、Quitメソッドで終了させても、タスクマネージャーを見るとEXCELが起動したままになっています。画面からはEXCELは消えています。どうにかして完全に閉じたいので方法を教えてください

  • VB6.0でVB上にExcel

    VB上にExcelオブジェクトを貼り付け、特定の条件に当てはまったとき既存のExcelファイルのSheet1を乗せたいという場合は、どうすればいいのでしょうか?

  • vb.netでEXCEl出力

    VB.NETを始めて2週間ほどの初心者ですがお願いします。 現在DataGridViewに表示した内容を、ボタン押下によEXCELに表示するという段階で悩んでおります。 現状としては、ボタン押下によりEXCELを開くところまで終了していますが、どうすればDataTableの情報をEXCELに表示できるのかが 色んな質問を見させていただいたのですが分かりません。 お忙しいとは思いますがよろしくお願いします。 現在のEXCELを表示しているソースです Dim oExcel As New Excel.ApplicationClass Dim xlBooks As Excel.Workbooks ' xlApplication から WorkBooks を取得する xlBooks = oExcel.Workbooks ' 新しい Excel ブックを追加する xlBooks.Add() 'Excelを表示する oExcel.Application.Visible = True 環境としまして Microsoft Viosual Basic 2008 Express Edition VB.NET WinXP pro まだ質問する上で何の情報が必要なのかもわかりませんので、必要な情報がありましたら教えてください。

  • vb から Excel vba をうまく操作できない。

    VB 初心者で、困っています。 Excel VBA でいろんなツールを作成していますが数が多くなったので、今回、このツールを呼び出すメニューを作ろうと考えて、VB2008でメニューを作成したのですがうまく動作しません。 Excel VBAで作成しているツールは、単独で動作させれば、一番最後に新たなExcelファイルを作成・画面表示でツール自体は終了。となるのですが、VBメニューからツールを起動させると、最後に作成しているはずのExcelファイルが画面表示されません。(ファイルは作成されているみたいですが・・・) ・Excel VBA の新たなファイルへの出力部分です。     Worksheets("シート").Copy     Unload Me     Application.WindowState = xlMaximized     Workbooks("●●.xls").Close SaveChanges:=False ・VB2008 で呼び出すメニューボタン部分です。 Dim Exap As Object Exap = CreateObject("Excel.application") Exap.Workbooks.open("C:\●●.xls") Exap = Nothing よろしくお願いします。

  • 多重起動での同期動作

    よろしくお願いします。 VB2005にて開発していますが、アプリケーションを場合によって多重起動し、ボタンのクリックなどを同期的に発生させたいと考えています。 つまり、どれか一つのボタンを押すと、他の分身たちも同じクリックイベントが発生する。といった事です。 VB WH_KEYBOARD_LL や PostMessage などで色々やっては見たのですが、どうも思ったような動作をしません。 「それは無理だ」とか、「#$%%&で出来るだろ?」みたいなアドバイスだけでも戴けると有難いです。

  • VB6.0とVB.NETの違い

    学校の実習での復習で分からないところがありまして 文献を調べたのですが、解決しなかったので教えてください。 最近VB.NETを使う機会が多くなりまして、VB6.0との違いについて悩んでおります。 かつて、VB6.0で基礎的な参考書にデータコントロールを使用してのデータベース(エクセルを用いての)を作成したことがあったのですが、VB.NETにしてからは、同じ方法でのアプリケーションの作り方(データコントロールとエクセルを使っての方法)がわからなくなってしまいました。 どなたか、教えてください。おねがいします。