PythonとEXCELマクロ比較。Pythonの導入・設定【Windows・Mac両対応】

  • URLをコピーしました!

Python(パイソン)とは、プログラミング言語の1つ。
Excelも操作できます。
PythonとExcelマクロを比べてみました。

Excelマクロの事例

PythonをExcelマクロを比較するにあたって、次のような事例を準備しました。
かんたんな請求書作成です。

このような売上データ(シート「data」)があり、2行目から4行目までを

ex-it_24

ひな形(シート「master」)をコピーし、

ex-it_25

名称と金額を入力し、シート名を「名称」に変更するというものです。

ex-it_23

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を開いて、

image

Alt+F11(AltキーとF11キーを同時押し)で、Excelマクロを書くソフトが開き(Mac版は、メニューから選択)、

image

Alt→I→M(ALT、I、Mと順番に押す)で、プログラムを書けるようになります(Mac版はメニューから選択)。

image

セミナーもやりやすいです。

 

Pythonは設定がそれなりに大変です。

(Pythonのバージョンは3.7)

WindowsとMacでは、設定方法が違います。

まずはWindowsから。

Win①Python公式サイトからダウンロード

Pythonは無料で使えます。

公式サイトで、

ex-it_02

トップページ下のDownloadからWindowsをクリックし、

Inkedex-it_03_LI

Windowsならこれをクリックします。

(よほど古いPCでなければ、64=64ビットです)

ex101

Win②Pythonのインストール

ダウンロードしたファイルを開くとWindowsだとこういった画面です。

「Add Python3.7 to PATH」にチェックを入れるのを忘れないようにしましょう。

これを忘れると、少々めんどくさくなります。

もし忘れたら、いったんアンインストールして再度インストールしたほうがはやいです。

ex102

Win③コマンドプロンプトで設定

Windowsでは、「コマンドプロンプト」というものを開きましょう。

(標準で入っています。検索して探すとはやいです)

コマンドプロンプトとは、こんな一昔前の画面です。

(若い人は知らないんじゃないかと・・)

そもそもは、ここにコマンド(プログラム)を入力してPCを起動したり、ソフトを起動させたりするものでした。

Pythonでは、このコマンドプロンプトも使います。

ex-it_08

ここで、

python -m pip install --upgrade pip

といれ、Enterキーを押しましょう。

ex-it_09

PythonのPIP(ピーアイピー。Pythonを管理するシステム)をアップグレードできます。

いろいろメッセージがでてきて、こんな画面になればアップグレード完了です。

ex-it_11

Pythonは、ライブラリといわれる追加機能があり、それを管理するのがPIPです。

Excelを操作するのもライブラリを使います。

逆にいえば、標準機能ではExcelを操作できないのです。

Excelを操作できるものはいくつかありますが、今回は、openpyxlを使いました。

コマンドプロンプトに

pip install openpyxl

と入れ、Enterを押しましょう。

これでインストールできます。

image

Win④IDLEを開く

インストール後、「IDLE」(アイドル、 Integrated DeveLopment Environment。統合開発環境)というアプリを探しましょう。

主にこれでプログラムを書いていきます。

(他にも選択肢はありますが、別のソフトを入れる必要があるので、まずはこれで)

ex-it_06

ここで、Pythonのプログラムを入れると、実行して結果をみることができます。

Pythonでは、出力するのはprint。

print(‘hello’)

と入れ(’を忘れずに)、Enterキーを押すと、次のようにhelloと表示されます。

ex-it_07

ここにプログラムを入れても保存できませんし、1行ずつしか実行できません。

そこで、IDLEにファイルをつくります。

Excelマクロでいうと、Alt→I→Mの標準モジュールです。

 

 

Win⑤IDLEで新規ファイルをつくる

IDLEでCtrl+Nを押せば、新規ファイルができあがります。

ここにプログラムを書いて実行するのです。

IDLE本体にはその結果やエラーが表示されます。

image

プログラムファイルは、「〇〇.py」というファイル名で保存されます。

一度、Ctrl+Sで保存しておきましょう。

次はMac版です。

実はMacにはPythonが入っています。

が、バージョンは、2.7(もっと古い場合も)。

現在のバージョンは、3.7であり、2.xと3.xは互換性がありません。

3.xを使うようにしましょう。

 

Mac①Python公式サイトからダウンロード

公式サイトで、

ex-it_02

トップページ下のDownloadから[Mac]をクリックし、

Inkedex-it_03_LI

64ビットをクリックしてダウンロードします。

ex103

Mac②Pythonのインストール

ダウンロードしたファイルを開き、インストールします。

Mac③ターミナルで設定

Macでは、「ターミナル」というものを開きましょう。

(標準で入っています。検索して探すとはやいです)

EX-IT 3

ここで、

pip3 install --upgrade pip

といれ、Enterキーを押しましょう。

Pythonの2.7が入っているので、pipではなく、pip3というコマンドを使います。

EX-IT 6

PythonのPIP(ピーアイピー。Pythonを管理するシステム)をアップグレードできます。

さらにExcelを操作するライブラリopenpyxlを入れましょう。

EX-IT 5

ターミナルに
pip3 install openpyxl

と入れ、Enterを押しましょう。

これでインストールできます。

Mac④IDLEを開く

インストール後、「IDLE」(アイドル、 Integrated DeveLopment Environment。統合開発環境)というアプリを探しましょう。

EX-ITのコピー

主にこれでプログラムを書いていきます。

(他にも選択肢はありますが、別のソフトを入れる必要があるので、まずはこれで)

 

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)で、ファイルを選択してリボンの[ホーム]→[パスのコピー]でコピーすると楽です。

ex-it_17

ただし、そのまま張り付けると、ファイルの場所を示すパス(C¥〇〇・・・)に¥マークを使うことになってしまいます。

¥があるとエラーが出ますので、バックスラッシュになるように、IDLEのフォントを変えましょう。

(¥かバックスラッシュかはフォントによります)

IDLEのメニューで[Opitons]→[Configure]で、フォントを「Arai」にしておきます。

ex-it_18

Macでは、FinderでOptionキーを押しながら右クリックして[〇〇.Xlsxのパス名をコピー]を使いましょう。

IMG_7298

・インデント(タブ)に意味があるので、通常はつけてはいけない

・繰り返しは、for 〇 in △で、インデントがついた部分を繰り返す

image

・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キーがはやい

image

 

改めて比べてみるとこんな感じです。
excelpython
シンプルなのかどうなのか、なんともいえませんが、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
浜松町 九州熱中屋
東京駅 海人酒房

■昨日の娘日記

おむつを自分ではこうとしたり、服を着ようとしたり、靴をぬごうとしたりします。
まだまだうまくできませんが、そのうちできるようになるでしょうね。

  • URLをコピーしました!