Python技術者がExcelVBA学んだら2日でマスターできた件

プログラミング

お久しぶりです。最近はデータサイエンティストになりつつある、AIエンジニアのリンリンです。

この記事を見ているってことは、あなたはPythonに多少は興味のある人なんでしょうか。

それともExcelVBA?

まぁどっちでもいいですね。

 

ちょっと前にこんな記事も書きました。

記事見るのめんどくさい人用の要約
  • 研究で使う測定装置の測定データがテキスト形式で出てくるぞ
  • 1個整形するのに20分かかるぞ。1日数十個やらないかんぞ。
  • Pythonで自動化コード作ったら2秒で終わるようになったぞ
  • Python最高や・・・

ということでした。

まぁ正直Pythonは最高なんですよ。汎用性がある。なんにでも使える。

でもちょっと待って。Pythonは社会人の私だから気づいた欠点もある。

 

今回はPython技術者の私が、ExcelVBAっていう機能を勉強してみましたって話です。

スポンサーリンク

なんでも全部Pythonって訳にもいかない。それがビジネススキル。

さて、Pythonを多少触れるわたくしリンリンですが、やはり業務でExcelを扱うんですよね。

例えば何か実験を行ったとき、結果はCSVとかExcelファイルとして出力されます。

それを整形して、結果はどうだったか考察するわけです。

まぁどこかの研究室に所属していた人なら空気感は分かるんじゃないでしょうか。

 

さっきの記事みたいに、Pythonで自動化すればいい話だと思うでしょ?

でも社会ってそれだとダメなんですよね。

自動化した機能は、みんなに展開して使ってもらわないといけない。

 

Pythonのコード渡して、みんなが使えると思いますか?

まぁ無理ですよね。まずPythonのインストールからさせなきゃいけない。

 

Pythonのインストールを全員にさせるなんて、割と現実的ではないんですよ。

みんなが使えるソフト=Excel だからExcelVBAは便利

そこでExcelVBAってプログラミング言語の出番です。

これはみんな使えるExcelの機能の一つです。だからみんなが使える。

ExcelVBAを表示している画像

こんな感じで、Excelの機能だってことがわかりますよね。

Excelの自動化なら、PythonよりExcelVBA

私の経験から言わせると、Excelを何かしらで自動化処理したいならPythonよりExcelVBAです。

私も「なんでもPythonでええやん!」って思ってました。

でもやっぱりExcelVBAです。

理由を列挙しましょう。

Excel自動化なら何故 ExcelVBA > Python なのか
  • ExcelVBAはExcelに特化した機能がある(Pythonでは現状出来ない機能多々あり)
  • Pythonほどではないがコードが分かりやすい。
  • 他人に配布できる
  • デバッグが分かりやすい

まぁこの辺りでしょうかね。軽く解説していきましょうか。

ExcelVBAはExcelに特化した機能がある

PythonでExcelを弄る機能を使った人ならわかると思いますが、現状のPythonでExcel操作は

「OpenPyXL」とか「xlwings」とかのパッケージを使うしかありません。

これらのパッケージは、グラフ作成とか文字装飾が煩雑だったりそもそもサポートしていなかったりします。

ExcelVBAだと簡単なコードで書けても、Pythonだと何行にもわたるコードでないと再現できないこともあります。

Pythonほどではないがコードが分かりやすい。

Pythonのコードは分かりやすいですが、ExcelVBAも中々なもんです。

変数宣言があったり、配列操作が面倒くさかったりしますがまぁ似たようなものです。

プログラムの基礎もPythonと似通っているので、Pythonに触れる人なら数日でマスターできます。

他人に配布できる

まぁ正直、これが一番デカいですね。

Pythonで書いた自動化コードは基本他人に配布できません。

相手がPythonに触れるならいいですが、数多くの人が働く会社では無理ですよね。

結局、みんなが前準備無しで動かせる機能が欲しいわけです。

 

ExcelVBAならば「○○自動化」みたいなエクセルファイルをみんなに配布するだけで済みます。

中身はこんな感じ。

「実行!」を押せばExcelVBAの自動化コードが作動する仕組みです。

これならパソコンぽんこつおじさんでも扱えますよね。

デバッグが分かりやすい

Pythonのデバッグって結構めんどくさいんですよね。Jupyter Notebookだと他の開発環境よりデバッグが難しい(気がする)ですし。

ExcelVBAのデバッグは「ステップイン」って機能がありまして、一行ずつコードを実行して、実際にExcelが動いていきます。

実際にExcelが動いてくれれば、想像通りの挙動をしているかなんて一目瞭然です。

【実録】取り敢えずExcelVBAを勉強してみた。

Python技術者の私がExcelVBAを勉強してみました。

結果…

 

2日でマスターできました。(笑)

機械学習でしごかれたPythonerなめんなよ!

 

だって、基礎は殆どPythonと一緒。オブジェクトとプロパティの概念さえ分かっていれば、よゆーですよ。

あとはPythonの機能をExcelVBAに頭の中で変換するだけ。

 

こんな簡単で便利な言語をなんでやってこなかったんだろう。みんなもやろうぜ、ExcelVBA。

とはいえ、Pythonも重要よ?

これでPythonがポンコツ!とか言うつもりないです。Excelの処理ならExcelVBAにしましょうよって話。

ピザを切るときはナイフより、ピザカッター使いましょうよって話。(クソ分かりづらい)

 

もちろん測定結果がテキスト形式で出てくるモノもありますし、よーわからん形式で出てくるときもあります。

場面に合わせてPythonを使えばいいです。

Pythonはデータ分析や機械学習で猛威を振るえるので、大丈夫ですよ。Pythonはつよい。

ExcelVBAの勉強方法は?

私の勉強方法は、ネットで入門サイトを見るだけでした。

https://www.officepro.jp/excelvba/ ←このサイトとか分かりやすかった。

 

まぁ、いくらPythonで鍛えられているとは言えExcelVBAのお作法ってものもありますから一応プロの教材も買いました。

ExcelVBAの空気感が分かります。

テニスサークルとアカペラサークルの空気感的なノリで違いが分かります。(クソ分かりづらい)

 

まぁテキトーに勉強してみてくださいな。

まとめ

この記事のまとめ
  • Pythonもいいが、Excel自動化ならExcelVBAがイイゾ。
  • ExcelVBAなんて余裕で習得できるぞ。
  • ビジネススキルとしてExcelVBAは当然扱えるようにしておけよ!

では!

コメント

  1. しゅー より:

    はじめまして!
    VBAを会社の実務でひと通り使いこなしている(と自負している)者です。
    プログラミングを体系的に学んだわけではなく、独学でVBAのみを学びましたら。

    最近、pythonにも興味を持ち出したのですが、この記事とは逆に、VBAを学んだ人がpythonを学ぶ際の学習の進め方や注意点などあれば教えてください!