みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Windowsユーザー&プログラミング初心者向けに、Pythonでお仕事を快適にするツールを作り方をお伝えしています。
今回のお題はプログラムの起動です。
ほら、お仕事するときって、いろんなアプリケーション、ファイル、フォルダ、Webページといろいろと開くときあるじゃないですか。
で、毎日のようにそれらをいちいちクリックとかしたり開くの面倒ですよね。
そしたら、いつも起動する定番セットを自動で起動するようなスクリプトを作って、それをランチャーにセットしたり、タスクスケジューラにセットしたりすると、とっても便利そうです。
例えば、私の場合は以下ツイートしている通り、執筆用のセットを作りました。まあ快適です。
最近、執筆するときはWord、PowerPoint、Atom、SourceTree、あと特定のWebページをいくつか使います。
Pythonで全部開くようにして、ランチャーにセットしたら一発で全部起動できて超快適…!— タカハシノリアキ@パーフェクトExcelVBAは11月発売予定 (@ntakahashi0505) August 22, 2017
ということで、何回かにわたって、Windowsでいろんなプログラムを一気に起動するツールを作っていきます。
まず今回は、Pythonでアプリケーションを起動する方法です。
では、行ってみましょう!
Popen関数でアプリケーションを起動する
Pythonでアプリケーションを起動するには、subprocessモジュールのPopen関数を使います。
subprocessモジュールは標準ライブラリに同梱されていますのでインストールは不要ですが、スクリプトの最初でインポートする必要はありますね。
Popen関数の使い方はこちらです。
プログラムファイルは、pyファイルと同階層またはPATHが通っていればファイル名だけで大丈夫ですが、そうでない場合はフルパスで指定します。
また、今まで最初の文字が大文字の関数とかメソッドとか見かけなかったですが、「P」は大文字じゃないとダメです。(というか、難しい説明は端折りますが、Popenはコンストラクターというものです。)
ちなみに、「P」はProcessの「P」で、Popen関数は新しいプロセスでプログラムを実行するという動作をします。
Excelのフルパスを調べる
では、みんな大好きExcelを起動してみましょう。
ExcelはPATHは通っていませんので、フルパスを調べる必要がありますね。
まず Win キーを押して、Windowsメニューを開きます。
「ex」などと入力すると、検索結果としてExcelが登場しますので右クリック。開いたメニューから「ファイルの場所を開く」を選択します。
続いて、エクスプローラーでExcelが存在するフォルダにリンクしますので、そこでExcelらしきプログラムファイル(というか、ショートカットですけどね)を見つけて、右クリック。
開いたメニューから「プロパティ」を開きます。
あ、もちろんランチャーやタスクバーなどにExcelのショートカットアイコンがあれば、そこからプロパティを開いてもOKですよ。
プロパティウィンドウの「ショートカット」タブを選択し、「リンク先」がプログラムファイルへのフルパスになりますのでコピーしておきます。
フルパスはエスケープ文字「\」だらけ
これでフルパスがわかりましたので、Excelを起動してみましょう。
スクリプトはこちら。
import subprocess
subprocess.popen('C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE')
実行をしてみると…おや?
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
このようなエラーメッセージが表示されました。
おっと、Windowsでは「\」はエスケープシーケンスで「\\」としないといけないのでした。
ですが、フルパスには「\」は何度も出てくるので、いちいち修正するのは面倒…
raw文字列でエスケープ文字を無効にする
そんなときはraw文字列というものを使うと、文字列のエスケープ文字を無効にすることができます。
こんな風に書きます。
「r」つけるだけ。大文字「R」でもOKです。
また、シングルクォーテーションはダブルクォーテーションでもOKです。
Popen関数でExcelを起動するスクリプト
では、このraw文字列を使って、先ほどのスクリプトを修正してみましょう。
1文字加えるだけですね。
import subprocess
subprocess.Popen(r'C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE')
このスクリプトを実行すると、無事にExcelを起動することができました!
まとめ
以上、PythonでWindowsのアプリケーションを起動する方法についてお伝えしました。
subprocessモジュールのPopen関数を使ってExcelを開いてみました。
VBScriptでも同様のことができますので、お好みでどうぞ!
さて、今回はアプリケーションを開いてみましたが、次回はファイルとフォルダを開いてみたいと思います。
どうぞお楽しみに!