ExcelとPythonプログラムの連携を行う場合、ExcelからPythonのEXEファイルを起動するような処理が必要になってくる場合があります。
そのような場合にはWshShellを使用します。
目次
1.Excel VBEの「参照設定」にてライブラリ追加
WshShellを使用する場合には、ExcelのVBE(Visual Basic Editor)側でライブラリを追加しなければなりません。
以下のように、VBEの「ツール」タブにて、「参照設定」を選択します。
続いて、「参照設定」選択にて開いた以下の選択ウインドウにて「Windows Script Host Object Model」にチェックを入れて「OK」をクリックします。
これで、「WshShell」オブジェクトが使用可能になりました。
2.アプリケーション起動コード指定
WshShellを使用する場合には、ExcelのVBA側で以下のようなコード指定にてアプリケーションファイルを起動することができます。
Set ws = CreateObject("Wscript.Shell") ws.CurrentDirectory = ThisWorkbook.Path ws.Run """abc.exe""", 1, True 'コンソールが開く Set ws = Nothing
上記は、Excelファイルと同じフォルダに、PythonのEXEファイル(上記ではabc.exe)をを置いておいてそのファイルを起動する場合の例になります。
まずはじめに、1行目でCreateObjectにて「WindowsScriptHost」オブジェクトを生成しています。
次に、2行目では、そのカレントディレクトリにExcelファイル自身のパスを設定しています。
3行目で、Runメソッドを使用して「abc.exe」を起動しています。
3.Runメソッドの引数の説明
Runメソッドでは3つの引数指定ができます。
第1引数:起動するファイルを指定
上記ではカレントディレクトリにexeファイルを入れておいてそれを指定するだけですが、パス指定するような場合に、その中にスペースが含まれているような場合にはさらに""で囲まなければならないということになります。
""の中に""を入れる場合には、""2つで囲むということなので結果として左右に3つずつのダブルコーテーションになるということです。
逆に、上記の例のような場合にはファイル指定内にスペースがないため、単に「"abc.exe"」だけでも動作します。
第2引数:実行するアプリケーションのウインドウスタイル指定
第2引数の数値 | ウインドウスタイル | アクティブウインドウ |
---|---|---|
0 | 非表示 | 変わらない |
1 | 通常サイズ | 起動アプリケーション |
2 | 最小化 | 同上 |
3 | 最大化 | 同上 |
4 | 通常サイズ | 変わらない |
5 | そのまま | 起動アプリケーション |
7 | 最小化 | 変わらない |
(引数省略時:1指定)
参照URL:https://atmarkit.itmedia.co.jp/ait/articles/0709/12/news125.html
指定により上記のようにウインドウスタイルとアクティブウインドウが変更されるということです。
引数を省略したり、1指定した場合には起動にあわせてコンソールウインドウが表示されますが、表示したくないような場合には、0指定とすれば表示されなくなります。
第3引数:起動アプリケーションの終了を待つか待たないか
(TrueまたはFalse指定)
省略した場合にはFalse指定のため、終了を待たずに次の行に進みます。Trueにした場合には、アプリケーションの終了待ちになります。
関連記事:
【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録
【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録
【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録
【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録
【PythonでのExcelファイル読み書き方法】ファイルオープンしているファイル(アクティブファイル)への書込方法 - Django Girls and Boys 備忘録
【Python Selenium】Webサイトのスクレイピングなどで必要なフレーム間移動方法 - Django Girls and Boys 備忘録
【Python Selenium】ブラウザ用ドライバーのダウンロードとインストール - Django Girls and Boys 備忘録
【PythonからWeb操作】selenium、各ブラウザ用ドライバーの最新バージョン確認、ダウンロード場所 - Django Girls and Boys 備忘録
【Python Selenium】新規ウインドウ追加時のウインドウ切替方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録
【Python Selenium】新規ウインドウ(新規タブ)追加時のウインドウ切替方法(追加ハンドルをハンドル差異比較にて取得) - Django Girls and Boys 備忘録
【python】実行時に表示されるコンソールウインドウを非表示にする方法 - Django Girls and Boys 備忘録
【Python Selenium】Webサイトのソースコードをファイル保存する方法 - Django Girls and Boys 備忘録
【Python Selenium】EdgeのI.E.モード操作の事前準備での設定 - Django Girls and Boys 備忘録
【Python Selenium】EdgeのI.E.モードでブラウザ操作する場合のドライバー設定方法と簡単な起動例 - Django Girls and Boys 備忘録
【Python】キー入力によるプログラム終了処理、ループを抜けて次の処理へ移行する処理 - Django Girls and Boys 備忘録
【Python Excel】ExcelからのPython実行ファイル(アプリケーションファイル)起動方法 - Django Girls and Boys 備忘録
【Python Seleuium】ブラウザの拡大率の設定変更 - Django Girls and Boys 備忘録
【Python Selenium】EdgeのI.E.モードのドライバー設定での拡大率、保護モード設定チェックを無視する方法 - Django Girls and Boys 備忘録
【Python】ログイン中のユーザ名を取得する方法 - Django Girls and Boys 備忘録
【python】実行ファイル(EXEファイル)作成手順 - Django Girls and Boys 備忘録
【Python】データ解析用ライブラリpandasのインストール手順 - Django Girls and Boys 備忘録