Python(パイソン)とは、プログラミング言語の1つ。
Excelも操作できます。
PythonとExcelマクロを比べてみました。
Excelマクロの事例
PythonをExcelマクロを比較するにあたって、次のような事例を準備しました。
かんたんな請求書作成です。
このような売上データ(シート「data」)があり、2行目から4行目までを
ひな形(シート「master」)をコピーし、
名称と金額を入力し、シート名を「名称」に変更するというものです。
Excelマクロでは、たとえばこう書きます。
Sub Pytest() '繰り返し Dim i For i = 2 To 4 'ひな形のコピー Worksheets("master").Copy after:=Worksheets(Worksheets.Count) '名称の入力 Range("a4").Value = Worksheets("data").Range("a" & i).Value '金額の入力 Range("g8").Value = Worksheets("data").Range("b" & i).Value 'シート名変更 ActiveSheet.Name = Worksheets("data").Range("a" & i).Value Next End Sub
注意すべき点は、次のようなことです。
・「Sub」(サブ)ではじまり、「End Sub」で終わる
(「Sub」の次の「Pytest」はマクロ名で、任意)
・通常、Excelファイルとセットになっている。
・ファイル(ブック)名、シート名は指定しなければ、今開いているファイル、シートで処理する
・原則としてファイルを開いた状態でマクロが動き、処理される
・「Dim」(ディム)で、変数iを原則として宣言する(iは任意)
・繰り返しは、「for」から「Next」
・aとiの連結は、「&」
・コメントは、行頭に、「’」(シングルコーテーション。Shiftを押しながら「7」)を入れる。→プログラムとして実行されない。
・プログラム実行はF5
Pythonは設定が大変
Python(パイソン)は、Excelだけではなく、もっと幅広く使われるプログラミング言語です。
アプリをつくったり、機械学習に使ったりもできます。
シンプルで読みやすいと人気がある言語です。
英語、スペイン語、中国語みたいなもので、それぞれ特徴や違いがあります。
今回は、Excel操作についてとりあげてみて、Excelマクロと比較してみました。
PythonとExcelマクロの大きな違いの1つは、設定が大変ということ。
Excelマクロは、細かい設定はあれど、基本的には、Excelを開いて、
Alt+F11(AltキーとF11キーを同時押し)で、Excelマクロを書くソフトが開き(Mac版は、メニューから選択)、
Alt→I→M(ALT、I、Mと順番に押す)で、プログラムを書けるようになります(Mac版はメニューから選択)。
セミナーもやりやすいです。
Pythonは設定がそれなりに大変です。
(Pythonのバージョンは3.7)
WindowsとMacでは、設定方法が違います。
まずはWindowsから。
Win①Python公式サイトからダウンロード
Pythonは無料で使えます。
公式サイトで、
トップページ下のDownloadからWindowsをクリックし、
Windowsならこれをクリックします。
(よほど古いPCでなければ、64=64ビットです)
Win②Pythonのインストール
ダウンロードしたファイルを開くとWindowsだとこういった画面です。
「Add Python3.7 to PATH」にチェックを入れるのを忘れないようにしましょう。
これを忘れると、少々めんどくさくなります。
もし忘れたら、いったんアンインストールして再度インストールしたほうがはやいです。
Win③コマンドプロンプトで設定
Windowsでは、「コマンドプロンプト」というものを開きましょう。
(標準で入っています。検索して探すとはやいです)
コマンドプロンプトとは、こんな一昔前の画面です。
(若い人は知らないんじゃないかと・・)
そもそもは、ここにコマンド(プログラム)を入力してPCを起動したり、ソフトを起動させたりするものでした。
Pythonでは、このコマンドプロンプトも使います。
ここで、
python -m pip install --upgrade pip
といれ、Enterキーを押しましょう。
PythonのPIP(ピーアイピー。Pythonを管理するシステム)をアップグレードできます。
いろいろメッセージがでてきて、こんな画面になればアップグレード完了です。
Pythonは、ライブラリといわれる追加機能があり、それを管理するのがPIPです。
Excelを操作するのもライブラリを使います。
逆にいえば、標準機能ではExcelを操作できないのです。
Excelを操作できるものはいくつかありますが、今回は、openpyxlを使いました。
コマンドプロンプトに
pip install openpyxl
と入れ、Enterを押しましょう。
これでインストールできます。
Win④IDLEを開く
インストール後、「IDLE」(アイドル、 Integrated DeveLopment Environment。統合開発環境)というアプリを探しましょう。
主にこれでプログラムを書いていきます。
(他にも選択肢はありますが、別のソフトを入れる必要があるので、まずはこれで)
ここで、Pythonのプログラムを入れると、実行して結果をみることができます。
Pythonでは、出力するのはprint。
print(‘hello’)
と入れ(’を忘れずに)、Enterキーを押すと、次のようにhelloと表示されます。
ここにプログラムを入れても保存できませんし、1行ずつしか実行できません。
そこで、IDLEにファイルをつくります。
Excelマクロでいうと、Alt→I→Mの標準モジュールです。
Win⑤IDLEで新規ファイルをつくる
IDLEでCtrl+Nを押せば、新規ファイルができあがります。
ここにプログラムを書いて実行するのです。
IDLE本体にはその結果やエラーが表示されます。
プログラムファイルは、「〇〇.py」というファイル名で保存されます。
一度、Ctrl+Sで保存しておきましょう。
次はMac版です。
実はMacにはPythonが入っています。
が、バージョンは、2.7(もっと古い場合も)。
現在のバージョンは、3.7であり、2.xと3.xは互換性がありません。
3.xを使うようにしましょう。
Mac①Python公式サイトからダウンロード
公式サイトで、
トップページ下のDownloadから[Mac]をクリックし、
64ビットをクリックしてダウンロードします。
Mac②Pythonのインストール
ダウンロードしたファイルを開き、インストールします。
Mac③ターミナルで設定
Macでは、「ターミナル」というものを開きましょう。
(標準で入っています。検索して探すとはやいです)
ここで、
pip3 install --upgrade pip
といれ、Enterキーを押しましょう。
Pythonの2.7が入っているので、pipではなく、pip3というコマンドを使います。
PythonのPIP(ピーアイピー。Pythonを管理するシステム)をアップグレードできます。
さらにExcelを操作するライブラリopenpyxlを入れましょう。
ターミナルに
pip3 install openpyxl
と入れ、Enterを押しましょう。
これでインストールできます。
Mac④IDLEを開く
インストール後、「IDLE」(アイドル、 Integrated DeveLopment Environment。統合開発環境)というアプリを探しましょう。
主にこれでプログラムを書いていきます。
(他にも選択肢はありますが、別のソフトを入れる必要があるので、まずはこれで)
Mac⑤IDLEで新規ファイルをつくる
IDLEでCommand+Nを押せば、新規ファイルができあがります。
Pythonで書いた場合
今回の事例、Pythonではこういったプログラムを書きます。
# Excel用のプログラムを使用 import openpyxl # ファイルを開く wb=openpyxl.load_workbook('C:\\Users\\info0\\Dropbox\\0 INBOX\\Pytest.xlsx') # 繰り返し for i in range(2,5): # ひな形のコピー wb.copy_worksheet(wb['master']) #名称の入力 wb['master Copy']['a4'].value=wb['data']['a'+str(i)].value #金額の入力 wb['master Copy']['g8'].value=wb['data']['b'+str(i)].value # シート名変更 wb['master Copy'].title=wb['data']['a'+str(i)].value #ファイル保存 wb.save('C:\\Users\\info0\\Dropbox\\0 INBOX\\Pytest.xlsx')
次のような注意点があります。
・Excelのライブラリ、openpyxlをインポートする(import openpyxl)
・Excelファイルを指定しなければいけない(正式名称で)
上記の2か所のファイル名はそれぞれのものに合わせて変えていただければ。
Windowsの場合は、 エクスプローラー(Windwsキー+E)で、ファイルを選択してリボンの[ホーム]→[パスのコピー]でコピーすると楽です。
ただし、そのまま張り付けると、ファイルの場所を示すパス(C¥〇〇・・・)に¥マークを使うことになってしまいます。
¥があるとエラーが出ますので、バックスラッシュになるように、IDLEのフォントを変えましょう。
(¥かバックスラッシュかはフォントによります)
IDLEのメニューで[Opitons]→[Configure]で、フォントを「Arai」にしておきます。
Macでは、FinderでOptionキーを押しながら右クリックして[〇〇.Xlsxのパス名をコピー]を使いましょう。
・インデント(タブ)に意味があるので、通常はつけてはいけない
・繰り返しは、for 〇 in △で、インデントがついた部分を繰り返す
・for 〇 range(2,5)で、2、3、4と繰り返す(5と指定するけど4まで。最終値として指定したものから1を引いたとこまで、つまり5-1=4までという意味になる)
・変数の指定はいらない、ない。(wbのみ変数として使っています)
・シートの指定は、ブック名(この場合wb)に[‘シート名’] 、セルの指定は、ブック名シート名セル名とつなげる
・シートをコピーすると、シート名に「copy」がつく
・変数iは、str(i)と、文字にしてaと連結する必要あり
・連結は+
・最後にExcelファイルを保存する必要あり
・Excelファイルを開いたままだと操作できない
・Pythonのopenpyxlは、Excelファイルを開くのではなく、アクセスして操作するイメージ
(プログラム実行した後開く必要あり)
・プログラム実行はF5(実行までに保存する必要あり)。
保存しないで実行しようとすると次のようなボックスが出てくるので、F5を押してEnterキーがはやい
改めて比べてみるとこんな感じです。
シンプルなのかどうなのか、なんともいえませんが、Pythonのほうができることが多く可能性があるので、プログラミングをやるならPythonを覚えるのも1つの手でしょう。
ただ、Excelに限っていれば、Pythonで現状できないこともありますので(ライブラリがバージョンアップしてできる可能性も)、両方学ぶのがベターでしょうね。
違う言語を同時期に学ぶのもおもしろいかと。
今回の事例の範囲で改めて比較してみました。
(Pythonは、純正のIDLEを使った場合)
Excelマクロ | Python | |
---|---|---|
初期設定 | ExcelでAlt+F11 | Pythonのダウンロード ・インストール コマンドプロンプト (ターミナル)で ライブラリのインストール |
実行 | F5キー | F5キー (保存する必要あり) |
保存 | Ctrl+S (Excelとともに保存。 MacはCommand+S) |
Ctrl+S (Macは Command+S。 またはF5のあとEnter) |
追加機能 | 必要なし | ライブラリをインポート |
更新 | 基本的になし | あり |
プログラム ファイル名 |
〇〇.xlsm(Excelとセット) | 〇〇.py |
変数 | 原則宣言する | 宣言しなくていい |
インデント | 自由 | 不可(インデントに 意味あり) |
文字列 | ”(ダブル コーテーション)で 囲む |
‘(シングル コーテーション)で囲む |
できること | Excel中心 | 幅広い |
ブック、シート | 指定しなければ アクティブな ブック、シート |
指定必須 |
ファイル | 原則開いて処理。 開いたままの処理も可 |
開かずに処理。 開いたままの処理 は不可(openpyxl) |
プログラムの 開始・終了 |
SubとEnd Sub(通常) | なし |
繰り返し | for とnext | for と インデント |
2行目から4行目まで 繰り返し |
for i 2 to 4 | for i in range(2,5) |
文字の連結 | & | + |
変数の連結 | そのまま | strで文字列にする |
コメント | ‘(シングル コーテーション) |
#(シャープ) |
シートのコピー | Worksheets(“シート名”). Copy |
ブック名. copy_worksheet (シート名) |
セルの指定 | Workbooks(“ブック名”). Worksheets(“シート名”). Range(“セル名”) |
ブック名シート名セル ([’と’]で囲む) |
シート名変更 | シート名.name | ブック名シート名.title |
ファイル保存 | ThisWorkbook.save | ブック名.save(ファイル名) |
サンプルはこちらです。
こちらはExcelマクロ入りのExcel。
EX-ITサンプル PythonExcelマクロ比較 Excelマクロ.xlsm
こちらは、Pythonで操作するExcelファイル。
EX-ITサンプル PythonExcelマクロ比較 Python.xlsx
昨日は、Excelマクロプログラミング入門セミナーを開催しました。
次回は、9/19に開催します。
セミナー、懇親会後、東京駅で作戦会議。
9/24にイベントをやる予定です。
■昨日の1日1新
※詳細は→「1日1新」
エクセルシオール ハマサイト
浜松町 2+9
浜松町 九州熱中屋
東京駅 海人酒房
■昨日の娘日記
おむつを自分ではこうとしたり、服を着ようとしたり、靴をぬごうとしたりします。
まだまだうまくできませんが、そのうちできるようになるでしょうね。
■著書
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方