大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、別アプリケーションを起動する方法について、ご紹介します。アプリケーションの起動には、「Wscript.Shell」の「Run」を使います。具体的なVBAコードを使って、解説します。

はじめに

この記事では、別アプリケーションを起動する方法について、ご紹介しました。

別アプリケーションを起動するには、「Wscript.Shell」の「Run」を使うと便利です。

注意点として、起動するファイル名にスペースがある場合は、空白「""""」で囲む必要があります。

起動する際は、「非同期」と「同期」があって、状況に応じて使い分けることができるので、便利です。

では、別アプリケーションを起動する方法について、解説していきます。

この記事で紹介すること

  • 別アプリケーションを起動する

目次

VBAで別アプリケーションを起動

VBAで、別アプリケーションを起動する方法について、ご紹介します。

別アプリケーションを起動したい場合は、「Wscript.Shell」の「Run」を使うと便利です。

では、解説していきます。

Wscript.ShellのRunを使う

「Wscript.Shell」の「Run」は、次のように入力して使用します。

使い方

「CreateObject("Wscript.Shell").Run ファイル名」

というような感じです。

実行すると、「拡張子に紐づいているアプリケーション」で、ファイルを開くことができます。

事前に、拡張子の紐づけを変更しておけば、使うアプリケーションを変更できます。

新規のメモ帳を起動

では、「Wscript.Shell」の「Run」を使って、新規のメモ帳を開いてみます。

Sub TEST1()
    
    With CreateObject("Wscript.Shell")
        '新規のメモ帳を起動
        .Run "notepad.exe"
    End With
    
End Sub

では、実行してみます。

新規のメモ帳を起動

新規のメモ帳を開いた結果

新規のメモ帳を開くことができました。

メモ帳を起動

次は、「Wscript.Shell」の「Run」を使って、保存されているメモ帳を開いてみます。

「Run」のあとに、メモ帳のフルパスを入力するとできます。

Sub TEST2()
    
    With CreateObject("Wscript.Shell")
        'メモ帳を起動
        .Run "C:\TEST\TEST.txt"
    End With
    
End Sub

では、実行してみます。

メモ帳を起動

保存されているメモ帳を開いた結果

「.txt」はメモ帳に紐づいているので、メモ帳で開かれました。

PDFを起動

次は、「Wscript.Shell」の「Run」を使って、PDFファイルを起動してみます。

Sub TEST3()
    
    With CreateObject("Wscript.Shell")
        'PDFを起動
        .Run "C:\TEST\TEST.pdf"
    End With
    
End Sub

では、実行してみます。

PDFを起動

PDFを起動した結果

「.pdf」は、「Adobe Acrobat Reader」に紐づいているので、「Adobe Acrobat Reader」で開かれました。

CSVを起動

次は、「Wscript.Shell」の「Run」を使って、CSVファイルを起動してみます。

Sub TEST4()
    
    With CreateObject("Wscript.Shell")
        'CSVファイルを起動
        .Run "C:\TEST\TEST.csv"
    End With
    
End Sub

では、実行します。

CSVを起動

CSVファイルを起動した結果

CSVファイルを起動することができました。

「.csv」は、Excelに紐づいているので、Excelで表示されました。

Excelを起動

「Wscript.Shell」の「Run」を使って、Excelを起動することもできます。

Sub TEST5()
    
    With CreateObject("Wscript.Shell")
        'Excelファイルを起動
        .Run "C:\TEST\TEST.xlsx"
    End With
    
End Sub

では、実行します。

Excelを起動

Excelを起動した結果

Excelを起動することができました。

まぁ、起動はできますけど、Excelを開くなら、「Workbooks.Open」がいいですね。

Wscript.ShellのRunの注意

「Wscript.Shell」の「Run」を使う際の注意で、ファイル名にスペースがあると、エラーとなります。

ファイル名にスペースがある場合は、文字列を空白「""""」で囲みましょう。

ファイル名にスペースがあるとエラー

ファイル名にスペース「" "」がある場合で、メモ帳を起動してみます。

Sub TEST6()
    
    With CreateObject("Wscript.Shell")
        'メモ帳を起動
        .Run "C:\TEST\TEST .txt" '←エラーとなる
    End With
    
End Sub

次のスペースがあるメモ帳を用意しました。

ファイル名のスペースを入力

スペースがあるメモ帳を用意

では、実行してみます。

エラーとなる

スペースがあるためエラーとなる

ファイル名にスペース「" "」があるので、エラーとなりました。

スペースがある場合は「""""」で囲む

ファイル名に「" "」がある場合は、空白「""""」で囲む必要があります。

Sub TEST7()
    
    With CreateObject("Wscript.Shell")
        'ファイル名にスペースがある場合
        .Run """" & "C:\TEST\TEST .txt" & """"
    End With
    
End Sub

先ほどと同じスペースのあるメモ帳で試してみます。

スペースがある場合

ファイル名にスペースのあるメモ帳

では、実行します。

空白「""""」で囲んで起動

ファイル名にスペースがある場合にアプリケーションを起動した結果

ファイル名にスペースがあっても、空白「""""」で囲むことで、メモ帳を起動することができました。

起動するアプリケーションを指定

「Wscript.Shell」の「Run」では、アプリケーションを指定して、開くことができます。

起動するアプリケーションを指定する

起動するアプリケーションを指定するには、次のように入力します。

「CreateObject("Wscript.Shell").Run "起動するアプリケーションのフルパス 起動するファイルのフルパス"」

というような感じです。

最初に、「起動するアプリケーションのフルパス」を入力して、「半角スペース」を入力したあとに、「起動するファイルのフルパス」を入力するのがポイントです。

CSVをメモ帳で起動する

「.csv」の拡張子には、Excelで開くように紐づけています。

「.csv」がExcelに紐づいているか確認

ファイルの形も、「Excel」になっていますね。

CSVファイルはExcelに紐づいている

「Wscript.Shell」の「Run」を使って、「.csv」ファイルを開いてみます。

Sub TEST8()
    
    With CreateObject("Wscript.Shell")
        '.csvをエクセルで起動
        .Run "C:\TEST\TEST.csv"
    End With
    
End Sub

実行します。

CSVがExcelで開かれる

「.csv」ファイルがExcelで開かれました。

「.csv」には「Excel」が紐づいています。

「.csv」ファイルを「メモ帳」で起動

この「.csv」ファイルを「メモ帳」で起動してみます。

Sub TEST9()
    
    With CreateObject("Wscript.Shell")
        'CSVをメモ帳で開く
        .Run "C:\Windows\System32\notepad.exe C:\TEST\TEST.csv"
        '↓でもできます。
        '.Run "notepad.exe C:\TEST\TEST.csv"
    End With
    
End Sub

では、実行してみます。

CSVファイルをメモ帳で起動した結果

「.csv」ファイルを、メモ帳で起動することができました。

起動するアプリケーションを指定して、ファイルを起動したい場合に、使えます。

起動時に非同期と同期を選択

「Wscript.Shell」の「Run」では、「非同期」と「同期」が選択できます。

今までの説明は、すべて「非同期」です。

「非同期」は、起動するVBAコードを実行して、その完了にかかわらず、次のVBAコードへ進みます。

「同期」の場合は、アプリケーションを起動するVBAコードを実行すると、アプリケーションが起動して閉じられると、次のVBAコードに進みます。

まとめると、

  • 非同期:起動完了に関係なく、次のVBAコードに進む
  • 同期:起動して閉じた後に、次のVBAコードに進む

という感じです。

では、ちょっとやってみます。

非同期でアプリケーションを起動

まず、非同期で複数のアプリケーションを、起動してみます。

Sub TEST10()
    
    With CreateObject("Wscript.Shell")
        .Run "C:\TEST\TEST1.pdf" '非同期で開く
        .Run "C:\TEST\TEST2.pdf" '非同期で開く
        .Run "C:\TEST\TEST3.pdf" '非同期で開く
    End With
    
    Debug.Print "完了"
    
End Sub

複数のPDFファイルを、用意しました。

複数のPDFファイル

複数のPDFファイル

では、実行してみます。

起動完了に関係なく実行される

複数のPDFファイルが起動されて、VBAコードが実行される

結果は、複数のPDFファイルが起動されて、最後のVBAコードも実行されています。

これが、「非同期」で「Wscript.Shell」の「Run」を実行した場合です。

同期してアプリケーションを起動

「Wscript.Shell」の「Run」を同期して、実行する場合は、3番目の引数に「True」を入力します。

「CreateObject("Wscript.Shell").Run ファイル名, , True」

という感じです。

複数のPDFファイルを、「同期」した場合で起動してみます。

Sub TEST11()
    
    With CreateObject("Wscript.Shell")
        .Run "C:\TEST\TEST1.pdf", , True '同期して開く
        .Run "C:\TEST\TEST2.pdf", , True '同期して開く
        .Run "C:\TEST\TEST3.pdf", , True '同期して開く
    End With
    
    Debug.Print "完了"
    
End Sub

先ほどと同じPDFファイルを使って、試してみます。

複数のPDFファイル

複数のPDFファイルを用意

では、実行します。

「TEST1.pdf」が開く

まず、「TEST1.pdf」が開きます。

TEST1.pdfが開く

「TEST2.pdf」が開く

「TEST1.pdf」を閉じると、「TEST2.pdf」が開きます。

TEST2.pdfが開く

「TEST3.pdf」が開く

「TEST2.pdf」を閉じると、「TEST3.pdf」が開きます。

TEST3.pdfが開く

最後のVBAコードが実行される

「TEST3.pdf」を閉じると、最後のVBAコードが実行されます。

最後のVBAコードが実行される

こんな感じで、「同期」にすると、「Run」のコードが完了したあとに、次のVBAコードに進みます。

おわりに

この記事では、別アプリケーションを起動する方法について、ご紹介しました。

別アプリケーションを起動するには、「Wscript.Shell」の「Run」を使うと便利です。

注意点として、起動するファイル名にスペースがある場合は、空白「""""」で囲むというのがありました。

起動する際は、「非同期」と「同期」がありますので、状況に応じて、使い分けるといいです。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す