• ベストアンサー

EXCELでアプリを...

EXCEL97を使っていますが、EXCELのあるブックを開いたとき特定のアプリケーション(OFFICEではない)を起動し、作業後ブックを閉じたらそのアプリケーションの閉じるようにできないでしょうか。 たとえば「TEST.xls」を開くと「○○.EXE」が実行され作業が終わり「TEST.xls」を終了すると、「○○.EXE」も終了するようにしたいのですが。可能でしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

ブックを開いた時、「電卓」(CALC.EXE)を起動し、ブックを閉じると、 「電卓」も終了します。 APIを使用する方法の一例です。 標準モジュールに下記コードを記述します。 Option Explicit Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _   lpClassName As String, ByVal lpWindowName As String) As Long Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, _   ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Const WM_CLOSE = &H10 Sub Auto_Open()   Dim RetVal   RetVal = Shell("C:\WINDOWS\CALC.EXE", 1) ' 電卓を実行します。 ' End Sub Sub ShutdownOtherApp()   Dim hWnd As Long   hWnd = FindWindow(vbNullString, "電卓") '  hWnd = FindWindow(vbNullString, "MS-DOS プロンプト")   Call PostMessage(hWnd, WM_CLOSE, 0, 0) End Sub '------------------------------------ 'ThisWorkbookに次のコードを記述します。 Private Sub Workbook_BeforeClose(Cancel As Boolean)   ShutdownOtherApp End Sub  

hassin
質問者

お礼

できました。 ありがとうございました。

その他の回答 (1)

noname#102878
noname#102878
回答No.1

何のアプリかわかりませんが、DDEやCOM対応じゃないのならVBAのShell関数とSendKeysをヘルプで調べてみてください。 がんばればできるはずです。

関連するQ&A

  • VBからEXCELを起動する

    VBよりExcelを起動するプログラムで困っています。 1.VBよりGetObject関数でTest.xlsを開く 2.Test.xls内のAuto_Openマクロでパラメータファイルをよみ、そこに指定されているエクセルファイルを新しいブックでを開く ということをしたいのですが(「マクロを有効にする」のダイアログは表示されてもかまわないです)、何故かTest.xlsが開いたと思ったらすぐ閉じてしまいます(Excel自体は終了してないですべてのワークシートが閉じた状態)。 Auto_Openマクロは走ってるようなのですが、ついでにCloseマクロも走ってしまいます。 ちなみにTest.xlsを単体で動かしたときは問題なく動くのです・・・。 以前はVB4+Excel95の環境でAPI(CreateProcess)を使用し同作業を行っていたのですが、そのAPIが長いファイル名のスペース(OFFICEがある「Program File」のスペース)を認識しないそうで、この方法が使えないということでGetObjectを使用してみたのですが・・・。 何か根本的な間違いをしているのか、それともコードにエラーがあるのかさっぱりわからずお手上げです。 うまく疑問点を説明できているか不安なんですが、わかる方、どうかご指導願います。 よろしくお願いします。 ---------------------------------------- OSは、Windows 2000 アプリケーションは、Excel 2000 です ----------------------------------------

  • VBからExcelクローズ検知

    VBで作成したaaa.exeの中でエクセルファイルbbb.xls、ccc.xlsを呼び出しています。 taskIdB = Shell("C:\Program Files\Microsoft Office\Office10\excel.exe C:\bbb.xls", vbHide) taskIdC = Shell("C:\Program Files\Microsoft Office\Office10\excel.exe C:\ccc.xls", vbHide) bbb.xls、ccc.xlsともにWorkbook_Openイベントで自動的にVBAが起動し、処理が終了すると自分自身を クローズするようになっています。 ここで問題になるのが、ccc.xls は bbb.xlsの処理完了を待ってから起動したいのですが、連続的に起動してしまう点です。 aaa.exeのなかで、bbb.xlsの終了を検知するなど、良い解決方法があればお教え下さい。 WindowsはXp pro.、VBは6.0、Excelは2002を使用しています。 よろしくお願いいたします。

  • Excel2003(Winxp-SP3です)のスイッチ/eは、

    Excel2003(Winxp-SP3です)のスイッチ/eは、 立ち上げたとき新規のブック(Book1.xlsなどといった白紙のブック)を作らない設定ですね。 スタートメニューからファイル名を指定して実行で、 (1)"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" (2)"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /e を実行してみると、(1)(2)の違いがよくわかります。 ところで、フォルダオプションのファイルの種類で「XLS」を覗いてみると、 太字表示の「開く(O)」について、「アクションを実行するアプリケーション」の欄が上記(2)のようになっています。 ちなみにDDEメッセージ欄は[open("%1")]となっています。 で、質問ですが、上記「アクションを実行するアプリケーション」欄は、(1)でよい、つまり、「/e」は不要なのではないでしょうか。 ○○.xlsというファイルをダブルクリックしたとき、上記「/e」があってもなくても○○.xlsが開くだけで、白紙のブック(Book1.xlsなぞ)は生成されません。 フォルダオプションの上記箇所に「/e」の記述が必要なのは、どんなケース(どんな人)でしょうか。

  • エクセル97,マクロのツールバー登録について

    状況 例えば,test1.xlsというエクセルブックを開いて,vba機能によりマクロを作成します。これを,保存先をtest1.xlsにしてツールバーのアイコンに登録します。 作業が終わって,test1.xlsをok.xlsという名称に変えて保存・終了し,新しいbook1.xlsを立ち上げるとします。 すると,test1.xlsに登録したはずのツールバーアイコンのマクロ登録先が,ok.xlsに変わっています。 質問 例えばok.xlsにブック名を変更して保存・終了しても,ツールバーのアイコンのマクロの保存先をtest1.xlsにするには,どこをどの様に設定したら良いのでしょうか? 素人なものですから,具体的に方法を記述していただけると,非常に助かります。 よろしくお願い致します。

  • エクセルファイルがダブルクリックで開かない

    エクセルの2003をずっと使っていたのですが、2007を共存させたことにより、タイトルの問題が発生しています。 たとえばデスクトップにあるaaa.xlsというエクセルファイルをダブルクリックすると、 "C:\Documents.xls"が見つかりません。 と出て、OKを押すと、次に "and.xls"が見つかりません。 と出ます。さらにOKを押すと、 "Settings\デスクトップ\aaa.xls"が見つかりません。 となります。 拡張子とソフトのリンクを設定する”フォルダオプション”を見ると、 XLS拡張子に対応するソフトの設定のところでは、 アクション ⇒開く(&O) アクションを実行するアプリケーション ⇒"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /n /dde %1 「DDEを使う」 ⇒チェックが入っています DDEメッセージ ⇒[REM _DDE_Direct][FileOpen("%1")] アプリケーション ⇒Excel DDEアプリケーションが実行していないとき ⇒空白 トピック ⇒system 注:”⇒”はここでの説明用に入れているだけです。 となっています。 ここをいじればいいのかなぁとも思っていますが・・・ 現在、先にエクセルを開いておいて、そこにファイルをドラックドロップして作業していますが、とてもめんどくさいので、何とか良い方法はないものでしょうか?

  • 【VBA】他のExcelを起動し、呼び出し元のExcelを閉じる

    こんにちは。VBA初心者で、現在勉強している最中のものです。 宜しくお願い致します。 現在、TEST1.xlsというブックからTEST2.xls(マクロ有)を 起動させたいと思っております。 ただ、TEST2.xlsが起動したのち、TEST1.xlsは閉じさせたいのです。 TEST1.xlsは、TEST2.xlsのキック用とし、 TEST1.xlsを実行させると、あたかも、TEST2.xlsを起動させたように したいと思っています。 色々試してみたのですが、TEST2.xlsのマクロが無効になったり、 TEST1.xlsが閉じなかったりと試行錯誤しております。 どなたか、ご指南いただけたらと思っております。 どうぞ、宜しくお願い致しますm(_ _)m

  • VC++アプリからEXCELを起動できない。

    じんちゃんと申します。 EXCEL2003をVCアプリからバックグラウンド起動したいのですが上手くいきません。 どなたかご存知でしたら助けてください。主な条件は次の通りです。 [概要] VCアプリ内でCreateProcess()を用いてEXCEL.EXEをブック(.xls)引数で起動しています(ブックはマクロ付き)。 [環境]  ・EXCEL2003のみの製品をインストール。   VB6.0のランタイムを入れています。   Framework1.1も念のため入れました。  ・VC++.Netで開発したEXEからEXCELを起動しています。  ・OSはWindowsXP SP2です。  ・以前は動いていたのですがある日以降動かなくなりました。  ・現在でも起動対象ブックを手動で起動すると画面が問題なく表示されます。 [現象] 1.起動するとEXCELの起動ロゴが一瞬表示されるが起動しない。   タスクマネージャを見てもEXCEL.EXEが存在しない。 2.起動失敗後、対象ブックを手動で開くとセーフモード起動を聞かれます。   加えて起動後、マクロセキュリティを低に設定していたのが強制的に高   に設定されてしまっています。   手動起動後、以降、セーフモード起動は聞かれません。   CreateProcess()からの起動(バックグラウンド起動)した場合にのみ起動失敗します。 3.EXCEL2003を再度インストールして実施しても変化なし。 4.CreateProcess()の戻り値は正常でした。 5.他のNOTEPAD.EXEをEXCEL.EXEに変更して起動すると表示される。   恐らくEXCEL2003のみの固有問題と思います。   他のEXCELバージョンでは問題なく起動できます。 6.EXCEL2003だとブック指定なしでEXCEL.EXEを単体起動しても起動に失敗します。 よろしくお願いします。

  • VC++アプリからEXCELを起動しても画面が出ない

    はじめまして。 じんちゃんと申します。 EXCEL2003をVCアプリから起動したいのですが上手くいきません。 どなたかご存知でしたら助けてください。主な条件は次の通りです。 [概要] VCアプリ内でCreateProcess()を用いてEXCEL.EXEをブック(.xls)引数で起動しています(ブックはマクロ付き)。 [環境]  ・EXCEL2003のみの製品をインストール。VBランタイムは入れています。   VB6.0のランタイムを入れています。   Framework1.1も念のため入れました。  ・VC++.Netで開発したEXEからEXCELを起動しています。 2.OSはWindowsXP SP2です。 3.以前は動いていたのですが突然動かなくなりました。 4.現在でもブックを手動で起動すると画面が問題なく表示されます。 [現象] 1.起動するとEXCELの起動ロゴが一瞬表示されるが起動しない。 2.起動失敗後、ブックを手動で開くとセーフモード起動を聞かれます。   加えて起動後、マクロセキュリティを低に設定していたのが強制的に高   に設定されてしまっています。   CreateProcess()からの起動した場合にのみ起動失敗し環境が変わりま   す(前述のセキュリティレベルが強制変更される)。 3.EXCEL2003を再度インストールして実施しても変化なし。 4.CreateProcess()の戻り値は正常でした。 5.他のNOTEPAD.EXEをEXCEL.EXEに変更して起動すると表示される。   恐らくEXCELのみの固有問題と思います。 6.ブック指定なしでEXCEL.EXEを単体起動しても起動に失敗します。 よろしくお願いします。

  • 別枠にアプリケーションを立ち上げてファイルをひらき

    OSはXPで Officeは2003です。 Book1xlsを開いています。 それとは別のエクセルアプリケーションでBook2.xlsを開きたいのですが Book2.xlsをダブルクリックすると、 Book1xlsと同じアプリケーション内に開いてしまいます。 なので今はスタート→すべてのプログラム →Microsoft Office→Microsoft Office Excel 2003で 別枠に先にアプリケーションを立ち上げて 新規に開かれるBook1を×で消して そこにBook2.xlsをドラックして開いています。 Book2.xlsをダブルクリックでも別枠で開く方法があれば教えてください。 VBAは使いたくないです。

  • AppActivateの使い方

    現在開いているエクセルファイルをアクティブにしたいです。 バージョンは2003です。 アクセスVBAから Sub test() Dim rc As Long rc = Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE", 1) AppActivate "aaa.xls" End Sub を実行すると、 新規にアプリケーションが開いて、空のBOOK1が表示されます。 本当は、aaa.xlsをアクティブにしたいのですがうまく出来ません。 aaa.xlsは既に開いている状態です。 aaa.xlsはデスクトップにあります。 http://officetanaka.net/excel/vba/statement/AppActivate.htm を見ながらやってみたのですがうまく出来ません。 新たなアプリケーションは立ち上げたくないけど aaa.xlsはアクティブにしたいです。

専門家に質問してみよう