VBAからPythonに移行したいが「何から始めればいいか」が一番難しかった話

VBAは書けるようになりました。マクロの記録という段階からも脱却しています。ループや条件分岐も自在に操れるようになりました。しかし、いざPythonに手を出そうとした瞬間のことです。不自然なほどに足が止まってしまうことがあります。「一体どこから手を付ければよいのだろうか」と悩みます。VBAを使える方がPythonに移行する際の話です。最も高くそびえ立つ壁があると感じています。それは、まさにこの入口部分にあるのではないでしょうか。

まず理由について考えてみます。VBAは書けるのに「Pythonの始め方」だけが分からない理由についてです。

VBAの最大の強みについてお話しします。それは、何といってもExcelを開くことです。そして「Alt+F11」を押すだけという手軽さです。これだけで開発環境(VBE)がすぐに立ち上がります。環境構築という難しい概念は存在しません。そう言っても過言ではないと感じています。

一方、Pythonにはそれがないのが現状です。インストール手順を詳しく調べると驚きます。パスを通すという作業が必要です。仮想環境を構築するという手順もあります。聞いたこともないような単語が並んでいます。エディタの種類も無数に存在します。VSCodeやPyCharmなど、選択肢が多いです。そのため、どれを選べば良いか迷ってしまいます。この段階で、早くも嫌気がさしてしまいます。コードを書く前の準備段階で力尽きてしまいます。そのような経験をされた方もいらっしゃるはずです。

Python入門、最初の壁

次に、私自身の経験をお話しします。公式サイトからPythonをインストールした日のことです。その時の記憶は今も鮮明に残っています。「Python インストール Windows」で検索しました。すると「PATHを追加するオプション」がありました。そこにチェックを入れてくださいと書かれていました。当時はその意味がよく分かりませんでした。しかし、とりあえずチェックを入れて完了させました。次に大きな問題が起きました。「どこにコードを書けば良いのか」ということです。

VSCodeが良いという記事を見かけました。一方で、PyCharmを使うべきだという記事も見つかります。

また、最初はIDLEが良いという記事もありました。結局その日は、比較記事を読み続けるだけでした。一行もコードを書かずに終わってしまいました。

VBA知識を活かすPython学習

プログラミングの基礎知識についてです。皆さんはすでに頭に入っているはずです。

VBAとPythonのコード比較:同じ処理を両言語で書いたときの違い

VBAを経験された方なら大丈夫です。基礎知識はすでに身についているはずです。VBAで培ったロジックの組み立て方があります。それは、そのままPythonでも通用すると感じています。言語ごとの「方言」のような違いを覚えるだけです。それだけで十分に応用が利くのではないでしょうか。

VBA経験者が最初に覚えるべき機能対応

文法をゼロから丸暗記する必要はありません。VBAの「あの処理」を考えます。それがPythonだとどう書くのかという視点です。脳内で対応付け(マッピング)を行ってください。それが、一番早い学習方法ではないかと感じています。

PythonでVBA処理、ライブラリ導入

そのため、Excel操作を例にして考えてみましょう。VBAでは Worksheets("Sheet1").Cells(1,1).Value と書きます。この処理をPythonで行う場合です。openpyxlというライブラリを使用します。すると ws['A1'].value のように記述できます。非常にシンプルに書くことができるのです。

ループ処理についても、発想は同じです。VBAでは For i = 1 To 10 と記述していました。これがPythonでは for i in range(1, 11): となります。ファイル操作についても同様のことが言えます。VBAのDir関数などの代わりとなるものです。Pythonでは os.pathpathlib を使います。これらのライブラリを活用することになります。

pipでライブラリを入れましょう

まずは、pipでopenpyxlをインストールします。たったそれだけで準備は完了です。外部からExcelファイルの読み書きができます。それがあっけなく完了することに驚くはずです。きっと、感動を味わえるのではないかと思います。

VBA感覚でPython、…

VBAでコードを動かす時の話です。ほとんどの方はVBEを開くはずです。そして、F5キーを押すのではないでしょうか。あるいは実行ボタンをクリックすることもあります。コードを書く場所と動かす場所が同じです。これが一体化しているのは大きなメリットです。しかし、Pythonではこの感覚が崩れてしまいます。インストールが無事に完了しました。pipopenpyxlも入れました。でも、コードをどこで動かせば良いのでしょうか。そこで戸惑ってしまう方が多いのです。

VBA感覚でPython!Jupyter Notebo…

エディタを比較した末の仮定です。例えばVSCodeを選んだとしましょう。Pythonファイルを保存します。次にターミナルを開く必要があります。python sample.pyと打ち込みます。すると結果がそこに表示されます。VBAのイミディエイトウィンドウを思い出します。一行だけ試したい場合でも手順が多いです。一度ファイルに保存して実行する必要があります。これでは開発のテンポが落ちてしまいます。そう感じるのも無理はありません。この「試しに動かす」ハードルの高さです。これがPythonを敬遠する理由だと感じます。

VBAとPythonのコード比較:同じ処理を両言語で書いたときの違い

次に、解決策についてお話しします。Jupyter Notebookというツールについてです。

VBA経験者がJupyter Notebookに馴染む…

そこで活用したいのがJupyter Notebookです。これは、Webブラウザ上で動作します。Pythonコードを記述し、実行できる環境です。対話的な開発ができるのが特徴です。コードとその実行結果を保存できます。説明文や画像も一緒に管理できます。これらを「ノート」としてまとめられます。VBAのVBEとは見た目が異なります。しかし、その中にある思想は共通しています。VBAに慣れた方にとって馴染みやすいはずです。

Jupyter Notebookが馴染みやすい理由

まず、最大の利点についてです。コードを「セル」という単位で区切ります。そして部分的に実行できる点にあります。これはVBAのステップ実行に似ています。あるいはイミディエイトウィンドウの感覚です。特定の変数の中身を確認する作業と同じです。たとえば、Excelファイルを開くセルを作ります。次のセルで値を読み出す処理を書きます。このような試行錯誤が簡単にできます。VBAでデバッグするあの感覚です。それがJupyter Notebook上で再現できるのです。

Anacondaを使った簡単なインストール

Jupyter Notebook、…

インストールにはいくつかの方法があります。非エンジニアの方におすすめの方法です。最も手軽なのはAnacondaを利用することです。これはPythonのディストリビューションです。公式サイトのものは「素のPython」です。そこには最低限の機能しか含まれていません。

一方でAnacondaは非常に多機能です。Python本体に加えて多くのツールがあります。科学計算で使われるNumPyやPandasです。画像を描画するMatplotlibも含まれます。これら主要なライブラリが揃っています。Jupyter Notebookも最初から入っています。これらをひとまとめに提供してくれます。

VBAは書けるのに「Pythonの始め方」だけが分からない理由に関する解説図(日本語UI)

💡 ここで一度立ち止まって考えてみてください

PythonやExcel自動化スキルを持ったまま、ITエンジニアとして転職したい方には「EBAエデュケーション」が選択肢です。企業が求めるエンジニア像に合わせたカリキュラムで、実務直結のスキルを習得できます。

ITエンジニア転職・EBAエデュケーション →

Anacondaによる依存関係解決

次に、なぜAnacondaが便利なのかを説明します。ライブラリ管理の問題を解決してくれるからです。いわゆる「依存関係」の問題を吸収してくれます。例えば、ライブラリAがバージョンXを求めます。一方でライブラリCはバージョンYを求めます。このような状況はよく発生するものです。個別にpipで入れると大変です。あるライブラリを入れると他が動かなくなります。そのような事態に陥りやすいのです。特にWindows環境ではこの問題が多いと感じます。

Anacondaはこうした問題を解決してくれます。複雑な依存関係を適切に整理します。互換性のあるライブラリ群をまとめてくれます。これらをパッケージとして提供してくれます。いわば「道具が全部入った箱」のようなものです。そう考えれば分かりやすいと思います。これにより、環境構築の手間が減ります。余計なストレスを大幅に削減できるのです。

Jupyter Notebook起動と実践

Anacondaのインストールが終わった後の手順です。Anaconda Navigatorというツールを使います。そこからJupyter Notebookを起動できます。あるいはコマンドプロンプトも使えます。jupyter notebookと入力するだけです。すると自動的にブラウザが立ち上がります。インターフェースが表示されるはずです。これは、裏側で「サーバー」が動いているためです。ブラウザは「クライアント」として動作します。

サーバーは皆さんのローカルPCで動きます。ブラウザはそのサーバーに接続しています。そこでコードの送信や結果の受信を行います。これにより、Webページを操作する感覚になります。そのようにしてPythonを実行できるのです。それでは新しいノートブックを作りましょう。そしてコードを記述してみます。以前の記事にあった内容を試しましょう。openpyxlを使ったExcel操作です。

openpyxlでExcelデータ書き込み

import openpyxl

公式サイトからPythonをインストールした日のことは鮮明に覚えているに関する解説図(日本語UI)

# 新規ワークブックを作成
wb = openpyxl.Workbook()
# アクティブなシートを取得
ws = wb.active
# セルA1に値を書き込む
ws[‘A1’] = ‘Pythonから書き込み’
# セルB2に数値を書き込む
ws[‘B2’] = 123
# セルC3に計算式を書き込む
ws[‘C3’] = ‘=A1&” “&B2’
# ワークブックを保存
wb.save(‘sample_python_output.xlsx’)

実行結果とExcel出力の確認

このコードをセルに貼り付けてください。「Shift + Enter」で実行します。すると、コードの下に結果が表示されます。エラーが出なければ成功したことを意味します。もしエラーが起きたとしても大丈夫です。どこで問題が起きたのかが表示されます。これを「トレースバック」と呼びます。VBAの黄色いハイライトとは少し違います。しかし、メッセージを読めば特定できます。この段階ではエラーを恐れないでください。修正しながら学ぶのが醍醐味だと私は思います。

実行後にファイルを確認してみましょう。sample_python_output.xlsxという名前です。実際にそのExcelファイルを開いてみます。セルA1には「Pythonから書き込み」とあります。セルB2には「123」が入っています。さらにセルC3を確認してください。正しく計算された値が書き込まれているはずです。VBAでマクロを組んでいた時と同じです。確かにExcelを操作している感動があります。その喜びをぜひ味わってください。

Jupyter NotebookでPython学習と効…

大規模な開発には向かない面もあります。しかし、定型業務の自動化には最適です。データ集計やレポート作成で真価を発揮します。特に移行の初期段階におすすめしたいです。挙動を一つずつ確認しながら進められます。学習にはこれ以上ないほど優れた環境です。VBAのF5キーは「実行」を担っていました。その裏側でPythonがどう動くかを見られます。その「見える化」を強力にサポートしてくれます。この環境を使いこなせば効率は上がります。作業効率は飛躍的に向上するはずです。

Jupyterで叶うVBA流Python

先ほどのコードの続きについてです。Jupyter Notebookのセルを使いました。アクティブなシートを取得して名前を変えます。特定のセルに値を書き込むコードを書きました。そしてファイルを保存するという操作です。これらの一連の流れを試してみました。まるでVBEでコードを書いているようです。そのように、すぐ実行することができました。

たです。プログラミングの基礎知識はすでに頭に入っているはずに関する解説図(日本語UI)

さらに素晴らしい点があります。コードを書いて実行し、結果を見ます。そして次のコードを書くというサイクルです。この流れがVBAの感覚と似ていました。ステップ実行やイミディエイトと同じです。これには本当に感動を覚えました。今までは大きな壁を感じていました。どこで動かせば良いのかという悩みです。しかし、解決策が見つかりました。VBAでの試行錯誤をそのまま持ち込めます。そう確信することができました。

作成されたファイルを開いてみました。確かにシート名が変わっていました。A1セルには指定した文字がありました。「Hello, Python!」と書かれています。この「動いた!」という達成感です。VBAを始めた時と同じくらい嬉しかったです。環境構築の難しさに尻込みしていました。そんな私にとっての光明となりました。

VBAの経験がPython学習を加速

今回のExcel操作の例を通した感想です。VBAで身につけた知識についてです。それがPythonを学ぶ武器になると実感しました。ループ処理や条件分岐の考え方です。変数の使い方も含めて共通しています。基本的な考え方は同じだと言えます。異なるのは「書き方」という部分だけです。表面的な違いだと感じることができました。

「自分にはPythonは無理だ」と思っていました。そう決めつけていた過去の自分に教えたいです。もっと早くこの環境を知りたかったです。Jupyter NotebookやAnacondaの存在です。少し後悔していますが、遅くはありません。VBAで自動化してきた作業があります。それをPythonでもっとスマートにします。さらに広範囲を自動化できるはずです。そのような可能性が見えてきました。

例えばWebサイトからの情報取得です。それをExcelにまとめる作業などです。複数のファイルからデータを抽出します。VBAでは少し複雑だった処理です。Pythonならもっと簡潔に書けるでしょう。事務職としてのスキルアップです。日々の業務を効率化するための武器です。学習へのモチベーションがぐんと上がりました。この一歩を踏み出せたことに満足しています。

関連リンクとチェックリスト

無料プレゼント

Excel業務を自動化する前に確認するチェックリスト(PDF)

自動化していい作業かどうか、VBAかPythonか、最初に避けるべき落とし穴。実務でよく迷うポイントを1枚にまとめました。メールアドレスだけで受け取れます。

無料でチェックリストを受け取る

¥980 ミニキット

コピペで動かせる3スクリプト+自動化チェックリスト

最新ファイルの自動選択・部署名ゆれの正規化・CSV文字コード確認の3本セット。今週の作業を1つだけ楽にするための最小キットです。

ミニキットを見る(¥980)

関連する学びを少し広げるなら

PythonやExcelまわりの自動化をもう少し体系的に学びたい方には、実務向けの技術書で土台を固める方法もあります。

Python業務自動化関連書籍(Amazon) →

学習サービスとアンケート

VBA・Pythonをもっと本格的に学ぶなら

VBAやPythonを実務レベルまで引き上げたい方には「侍エンジニア」がおすすめです。マンツーマン指導・オーダーメイドカリキュラムで、文系出身でも挫折しにくい環境が整っています。無料カウンセリングだけでも学習ロードマップが明確になります。

侍エンジニア 無料カウンセリングを予約する →

[アンケート] この記事は役に立ちましたか?

30秒で答えられます。改善の参考にします。

1問だけ回答する