ExcelVBA(マクロ)でExcel以外の操作
ExcelVBAを使用して、他のアプリケーションの操作を行うことができます。
今回は他のアプリケーションの操作で最初に使う、アプリケーションを起動するVBAコードの書き方を紹介します。
アプリケーションを起動するコードの紹介
①Shell関数を使用する
以下のサンプルはメモ帳を起動するVBAコードです。
Shell “notepad.exe”, vbNormalFocus
End Sub
こちらはInternetExplorerを起動して、Yahoo!Japanのホームページを開く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を起動し、表示させるコードです。あらかじめ文字を入力しておきたい場合は「ああああ」の部分に入力しておきます。
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コードになります。
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を表示させるサンプルは以下のようになります。
Dim IE As Object
Set IE = CreateObject(“InternetExplorer.application”)
IE.Visible = True
IE.navigate (“http://www.yahoo.co.jp/”)
Set IE = Nothing
End Sub
細かく操作をする必要が出てきた場合は、コードの書き間違いを減らし、より正確に表記するために参照設定を追加する必要があります。
それぞれのアプリケーションを操作するための参照設定は個別のアプリケーションの操作でお伝えします。
コメント