- ベストアンサー
EXCELでアプリを...
EXCEL97を使っていますが、EXCELのあるブックを開いたとき特定のアプリケーション(OFFICEではない)を起動し、作業後ブックを閉じたらそのアプリケーションの閉じるようにできないでしょうか。 たとえば「TEST.xls」を開くと「○○.EXE」が実行され作業が終わり「TEST.xls」を終了すると、「○○.EXE」も終了するようにしたいのですが。可能でしょうか。 よろしくお願いします。
- みんなの回答 (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
その他の回答 (1)
何のアプリかわかりませんが、DDEやCOM対応じゃないのならVBAのShell関数とSendKeysをヘルプで調べてみてください。 がんばればできるはずです。
お礼
できました。 ありがとうございました。