Excel VBAでインターネットへ接続するときなどは、オートメーションでInternet Explorerを操作します。 たとえば次のような感じです。Sub Sample1() Dim URL As String, IE As Object Set IE = CreateObject("InternetExplorer.Application") URL = "http://www.moug.net/" With IE .Visible = True .Navigate URL End With Set IE = Nothing End Subこのようにオートメーションで操作できるアプリケーションならCreateObjectでインスタンスを操作してやればいいのですが、オートメーションに対応していないアプリケーションではこの方法を使うことができません。 そんなときは次のようにします。 1.操作対象のアプリケーションをアクティブにする 2.操作対象のアプリケーションにキーコードを送る 3.Excelに戻って次の処理をする 別のアプリケーションをアクティブにするいはAppActivateを使います。 次のマクロは、Windows付属の「メモ帳」をアクティブにします。 なお「メモ帳」では、Sample.txtを開いているものとします。Sub Sample2() AppActivate "Sample.txt - メモ帳", True End SubAppActivateの引数には、アクティブにしたいアプリケーションのタイトルバーに表示されている文字列を指定します。 引数に指定した文字列と完全に一致するタイトルバーが存在しないときは、引数に指定した文字列を前方一致で検索します。 ただし、タイトルバーに操作中のファイル名が表示されるような場合は、Windowsの設定によって拡張子が表示されない場合もありますので注意が必要です。 アクティブにしたアプリケーションにキーコードを送るにはSendKeysを使います。 次のマクロは、アクティブにしたメモ帳のデータを全選択し、クリップボードにコピーします。Sub Sample3() AppActivate "Sample.txt - メモ帳", True SendKeys "^a" SendKeys "%ec" End Sub最初のSendKeysで送ったキーコード「^a」は「Ctrl + a」を表し、2つめに送ったキーコード「%ec」は「Alt + e → c」という意味です。 詳しくはSendKeysのヘルプをご覧ください。 ただし、上記のマクロは正常に動作しない場合があります。 アプリケーションをアクティブにするのはWindowsの仕事であり、AppActivateはその指令を送ったに過ぎません。 続くSendKeysによるキーコードを、間違いなく外部アプリケーションに送信するためには、若干の"待ち時間"が必要な場合もあります。 ここでは、アプリケーションがアクティブになるまで「2秒間」待つことにします。 指定した時間までマクロを停止するにはWaitを使います。Sub Sample4() AppActivate "Sample.txt - メモ帳", True Application.Wait Now + TimeSerial(0, 0, 2) SendKeys "^a" SendKeys "%ec" End SubWaitは、マクロを「何秒後に再開する」ではなく「何時になったら再開する」と、再開する時間を指定します。 2秒後とは、現在の時間に2秒を加えた時刻ですから、Nowで現在の日時を取得し、TimeSerialの2秒を加えています。 Excelに戻ってくるときも、Waitを入れた方がよい場合があります。 マクロを実行するパソコンの環境によっても異なりますので、このへんは試行錯誤が必要ですね。 次のマクロは、メモ帳のデータをクリップボードにコピーし、Excelのアクティブシートに貼り付けます。Sub Sample5() AppActivate "Sample.txt - メモ帳", True Application.Wait Now + TimeSerial(0, 0, 2) SendKeys "^a" SendKeys "%ec" Application.Wait Now + TimeSerial(0, 0, 2) AppActivate "Microsoft Excel", True ActiveSheet.Paste End Sub