ExcelVBA(マクロ)で他のアプリケーションの起動

スポンサーリンク

ExcelVBA(マクロ)でExcel以外の操作

ExcelVBAを使用して、他のアプリケーションの操作を行うことができます。
今回は他のアプリケーションの操作で最初に使う、アプリケーションを起動するVBAコードの書き方を紹介します。

アプリケーションを起動するコードの紹介

①Shell関数を使用する

以下のサンプルはメモ帳を起動するVBAコードです。

Sub メモ帳の起動するVBAコード()
 
Shell “notepad.exe”, vbNormalFocus
 
End Sub

こちらはInternetExplorerを起動して、Yahoo!Japanのホームページを開くVBAコードです。

Sub ヤフージャパンのサイト開くVBAコード ()
 
Shell “C:\Program Files\Internet Explorer\iexplore.exe ” & _
“http://www.yahoo.co.jp/”, vbNormalFocus
 
End Sub

一番単純な方法がShell関数を使用したこれらの方法です。コードも簡単に記載できますが、問題点は①アプリケーションの元がどこに保存されているかを確認しないといけない、②非同期で実行するプログラムなので、起動したものを操作しにくいの2点です。

私は他の操作を続けて行うVBAを作成することが多いので、あまり使用しません。

②オートメーションでインスタンスを作成する

プログラミング言語に慣れていない人は理解しにくい言葉ですが、Excel、Word、PowerPoint、Access、OutlookなどのMicrosofotOfficeのアプリケーションとInternetExplorerにおいては、この操作によってアプリケーションを起動し、VBAで同期しながら操作することができます。またこれからVBA、マクロでコードを作成しようとしている方は、言葉はわからなくてもコードだけ覚えておけばほぼ問題ありません。

1.Wordの起動

Wordを起動し、表示させるコードです。あらかじめ文字を入力しておきたい場合は「ああああ」の部分に入力しておきます。

Sub Wordを起動するVBAコード()
 
Dim wdApp As Object
Set wdApp = CreateObject(“Word.Application”)
With wdApp
.Visible = True
.Documents.Add
‘.Selection.typetext Text:=”ああああ” ‘文字を入力したい場合は「ああああ」の部分に文字を入れ「’」を消す
End With
Set wdApp = Nothing
 
End Sub

2.Outlookの起動

Outlookを起動し、表示させるにはどのフォルダを表示させておくかと命令しておく必要があります。
以下のコードは個人用フォルダの受信トレイを表示させるVBAコードになります。

Sub Outlookを起動するVBAコード()
 
Dim outlookApp As Object
Set outlookApp = CreateObject(“Outlook.Application”)
 
Dim myNameSpace
Dim oFolder
Set myNameSpace = outlookApp.GetNamespace(“MAPI”)
Set oFolder = myNameSpace.Session.Folders(“個人用フォルダ”).Folders(“受信トレイ”)
‘パブリックフォルダを最初に表示する場合は.Folders(“パブリックフォルダ”).Folders(“すべてのパブリック フォルダ”)~~のように階層順に記載する
oFolder.Display
 
Set oFolder = Nothing
Set myNameSpace = Nothing
Set outlookApp = Nothing
 
End Sub

3.インターネットエクスプローラーの起動

インターネットのサイトを開いて思い通りに操作するためにまず行うアプリケーションの起動するためのコードです。Yahoo!Japanを表示させるサンプルは以下のようになります。

Sub インターネットエクスプローラーを起動してYahooJapanを表示するVBAコード()
 
Dim IE As Object
Set IE = CreateObject(“InternetExplorer.application”)
IE.Visible = True
IE.navigate (“http://www.yahoo.co.jp/”)
Set IE = Nothing
 
End Sub

細かく操作をする必要が出てきた場合は、コードの書き間違いを減らし、より正確に表記するために参照設定を追加する必要があります。
それぞれのアプリケーションを操作するための参照設定は個別のアプリケーションの操作でお伝えします。

コメント