Accessから他のアプリケーションを起動する方法: Shell関数

VBA

AccessからエクスポートしたExcelファイルを、確認のためにすぐに開きたいといったことは良くあることかと思います。また、Accessフォームのコマンドボタンをクリックすると計算機アプリケーションを開けるようにしたいといった場面もあるかもしれません。このように、Accessを使用中に別のアプリケーションを開く機会は多々あります。

そんなときに活用できる方法として、今回はShell関数について紹介します。

スポンサーリンク

Shell関数について

Shell関数とは、実行可能プログラムを実行し、成功した場合はプログラムのタスク ID を表す Variant (Double) の値を返し、失敗した場合は 0 を返します。

これだけだと何のことか良く分からないと思います。(著者も良く分からないです…。)そこで、基本構文を確認し、具体的な使い方を確認しましょう。

Shell(pathname, [ windowstyle ])
pathname: 必須。Variant (String)。 実行するプログラムの名前と必要な引数またはコマンド ライン スイッチ。ディレクトリまたはフォルダーとドライブを含めることができる。
windowstyle: 省略可能。プログラムを実行するウィンドウのスタイルに対応する Variant (Integer)。 windowstyle の指定を省略すると、プログラムがフォーカスを持った状態で最小化されて開始される。

引数のpathnameには起動させたいプログラムとパスを設定しますが、特に、プログラム名称の記載方法が間違っていると、上手く起動されませんのでご注意ください。

例として、Excel、Word、計算機の記載方法は次のとおりです。

Excel: Excel.EXE
Word: WINWORD.EXE
計算機: CALC.EXE

また、windowstyle引数には次の値を設定することができます。

定数説明
vbHide0ウィンドウは非表示で、フォーカスは非表示ウィンドウに渡されます。 
vbNormalFocus1ウィンドウにフォーカスが移動し、元のサイズと位置に復元されます。
vbMinimizedFocus2ウィンドウはフォーカス付きでアイコンとして表示されます。
vbMaximizedFocus3ウィンドウはフォーカス付きで最大化表示されます。
vbNormalNoFocus4ウィンドウの最近のサイズと位置が復元されます。 現在アクティブなウィンドウはアクティブなままです。
vbMinimizedNoFocus6ウィンドウはアイコンとして表示されます。 現在アクティブなウィンドウはアクティブなままです。

以上を踏まえて、過去の記事を参考としてShell関数のより具体的な使い方を見ていきましょう。

エクスポートしたExcelファイルをすぐに開く方法

過去に、AccessからExcelファイルをエクスポートする方法を紹介しましたが、その際にはエクスポートファイルのパスを「”C:\TEST\” & Format(Date, “yymmdd”) & “.xlsx”」のように設定しました。Shell関数では、pathname引数に上で示したようなファイルパスを設定することもでき、エクスポート直後にExcelファイルを起動することも可能です。

具体的に、過去に紹介したサンプルコードにExcelを起動するための処理を加えてみます。

Private Sub ExcelExport()

'変数宣言
Dim srchXls As String

'Excelエクスポート先のファイルパス
srchXls = "C:\TEST\" & Format(Date, "yymmdd") & ".xlsx"

'Excelファイルの出力
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "T_ExcelExport", srchXls, True, "出力結果"

'Excelファイルをエクスポートした旨を通知する。
MsgBox "Excelをエクスポートしました。"

'★Shell関数でエクスポートファイルを起動する。
Shell "Excel.exe " & srchXls, vbNormalFocus

End Sub

★印以降が新たに追加したコードですが、実行するプログラム名として「Excel.exe」を設定し、その後に「srchXls」としてファイルパスを指定しています。続いて、「vbNormalFocus」の値を設定することで、ウィンドウがExcelにフォーカスを持たせて、元のサイズと位置に表示されるようにしています。

このように、Shell関数を活用することでエクスポートしたファイルを探す手間を減らせ、また、すぐに内容を確認することができ、結果として業務効率の改善を図ることができます。

まとめ

今回は、Accessから別のアプリケーションを開く方法としてShell関数の使用方法を紹介しました。Accessフォーム上にコマンドボタンを用意し、ワンクリックで計算機アプリケーションを開くようにするなど、様々な場面で活用することができると思いますので、是非、この記事を参考にして開発を進めていただければと思います。

今回紹介した内容は、以下の書籍でも紹介されていますので、お手元に1冊用意されると良いと思います。

スポンサーリンク

AccessVBA逆引き大全 600の極意 Office365/2019/2016/2013/2010対応 | E-Trainer.jp[中村峻] |本 | 通販 | Amazon
AmazonでE-Trainer.jpのAccessVBA逆引き大全 600の極意 Office365/2019/2016/2013/2010対応。アマゾンならポイント還元本が多数。E-Trainer.jp作品ほか、お急ぎ便対象商品は当日お届けも可能。またAccessVBA逆引き大全 600の極意 Office365/...
AccessVBAパーフェクトマスター(Access2019完全対応 / Access2016/2013対応) (Perfect Master)
AccessVBAパーフェクトマスター(Access2019完全対応 / Access2016/2013対応) (Perfect Master)

コメント

タイトルとURLをコピーしました