【業務自動化】Chapter1-2|新規Excelファイルを作成しよう

ながみえ

一つ前のページでは openpyxlをインストール しました。

今回は openpyxlでExcelファイルを新規作成 してみましょう。

Chapter1:PythonでExcelを操作しよう
 ・Chapter1-1:openpyxlとは何か|インストールと動作確認
 ・Chapter1-2:PythonでExcelファイルを作成しよう ◁今回はここ
 ・Chapter1-3:Excelシートからデータを読み込もう
 ・Chapter1-4:Excelシートにデータを書き込もう
 ・Chapter1-5:データを新規シートへ自動振り分けしよう
 ・Chapter1-6:簡単なExcel自動化を体験しよう
Chapter2:PyInstallerで自動化ツール(.exe)を作ろう
Chapter3:便利な自動化ツールを5つ作ろう
Chapter4:Webスクレイピング入門
Chapter5:自動化ツールを作って稼ごう

「Excelファイルを自動で作成できる」ことは、自動化の第一歩です。

この記事では、Pythonを使ってファイル名やセルの内容を指定し、新しいExcelファイルを作成する方法を学習します。

正直、この作業だけを考えたら通常通り「右クリック ⇒ 新規作成」の手順で作成する方が何倍も速いですが、これから学習していく Excel業務自動化の基礎の基礎 として、必要な知識となります。

この記事を読み終えると、次のことができるようになります。

  • PythonコードからExcelファイルを新規作成できる
  • セルに文字を入力して保存できる
あわせて読みたい
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】
openpyxl使える関数・メソッド・クラス一覧【Excel自動化の基本リファレンス】

<<前のページ

業務自動化の記事一覧

次のページ>>

PythonでExcelファイルを新規作成する方法

openpyxlを使って新しいExcelファイルを作成し、セルに文字を書き込み、ファイルとして保存 する方法を学びます。

まずは実際のサンプルコードを確認してみましょう。

【Python】勉強猫がノートパソコンを前にして学習を始める様子。記事内の学習スタート用イラスト

Excelファイルを新規作成|サンプルコードで解説

まずはopenpyxlを使ってExcelファイルを新規作成し、セルに文字を書き込むシンプルなコードを見てみましょう。

以下のコードをコピーして実行してください。

import openpyxl	# openpyxlをインポート

new_book = openpyxl.Workbook()			# Workbookクラスのインスタンス生成
sheet = new_book.active					# アクティブなシートを取得
sheet['A1'] = "Pythonで作成したExcel"   	# A1セルに文字列を入力
new_book.save("new_excel.xlsx")			# 「new_excel.xlsx」というファイル名で保存

このコードを実行すると、このコードを保存したフォルダ内に「new_excel.xlsx」というファイルが作成されます。

A1セルには「Pythonで作成したExcel」と入力されているはずですので確認して下さい。

ただし、お使いのパソコンの設定によっては作成される場所が異なる場合があります。

その場合の対処方法は後で説明しますので、まずはこのコードの解説へ進んで下さい。

コードの解説:PythonでExcelを作成する流れ

このコードはとてもシンプルですが、Excel自動化の基本が詰まっています。

順番に見ていきましょう。

ライブラリの読み込み|openpyxlのインポート文

import openpyxl	# openpyxlをインポート

Excelを操作するために、まず openpyxl をインポートします。

Excel自動化のためのコードを書く際には、必ず最初に書き込みましょう。

新規ワークブックの作成|Workbook()クラスの使い方

new_book = openpyxl.Workbook()	# Workbookクラスのインスタンス生成

インポートしたopenpyxlライブラリの Workbook()クラス をインスタンス生成することで新しいWorkbookオブジェクト(Excelファイル)を生成し、変数に代入しています。

この方法で作成されたWorkbookオブジェクト(Excelファイル)にはデフォルトで「Sheet」という名前のシートが1つ入っています。

ただし、この時点ではnew_bookはメモリ上に存在するだけで、まだ保存はされていません。

「クラス」や「インスタンス生成」という言葉に自信がない方は、↓↓の記事で復習しましょう。

あわせて読みたい
【Python】レッスン5-01:クラスの基本を理解しよう
【Python】レッスン5-01:クラスの基本を理解しよう

シートの取得|activeプロパティの使い方

sheet = new_book.active	# アクティブなシートを取得

Workbookオブジェクト (Excelファイル) には複数のシートを持たせることができます。

複数のシートの例

その中で「現在アクティブな(選択されている)シート」を取得するのが .activeプロパティです。

新たに開く場合は一番最初の(一番左の)シートを取得します。

先ほど新規作成したWorkbookオブジェクト(Excelファイル)に.activeプロパティをあてることで Worksheetオブジェクト を作成し、変数sheetに代入しています。

セルにデータを書き込む|[]セルオブジェクトの使い方

sheet['A1'] = "Pythonで作成したExcel"	# A1セルに文字列を入

Worksheetオブジェクトに[]を付けることで セルオブジェクト となり、データの読み書きができます。

ここではA1セルに「Pythonで作成したExcel」という文字を入力しています。

ファイルの保存|saveメソッドの使い方

new_book.save("new_excel.xlsx")	# 「new_excel.xlsx」というファイル名で保存

Workbookオブジェクトの save()メソッド を使うことで、Excelファイルを保存できます。

ここでは「new_excel.xlsx」という名前で保存しています。

保存先はスクリプトを実行したフォルダ(カレントディレクトリ)です。

【Python】勉強猫がノートパソコンを見ながら考え込む様子。記事内の休憩用イラスト

pathlibライブラリでExcel保存先を指定しよう

先ほどのコードでは、Excelファイルは スクリプトを実行したフォルダ に保存されました。

しかし、お使いのパソコンの設定によっては作成される場所が異なる場合があります。

また、業務で使う場合は「レポート用フォルダ」や「バックアップ用フォルダ」など、決まったディレクトリに保存したいことも多いでしょう。

ここで便利なのが pathlibライブラリ です。

pathlibを使えば、ファイルやフォルダのパスを簡単かつ安全に扱うことができ、OSに依存しないコードが書けます。

ここからpathlibライブラリの使い方のみを説明していきます。より詳しい内容を知りたい場合は↓↓の記事を参考にしてください。

あわせて読みたい
Pythonのpathlibライブラリの使い方ガイド
Pythonのpathlibライブラリの使い方ガイド

pathlibライブラリの基本と使い方

Pythonの標準ライブラリである pathlib は、ファイルやフォルダの「パス(保存場所)」を扱うための便利なツールです。

従来は os.path を使うことが多かったのですが、pathlibを使うと直感的にパスを操作できるようになります。

例えば、Pythonファイルを保存したフォルダの中に「workbooks」というフォルダを作り、その中に作成するExcelファイルを保存したいとします。

業務自動化学習/				   # 全体の保存フォルダ
 └── Sample.py				  # Pythonファイル
     └── workbooks/			 # Excelファイルの保存フォルダ
         └── Sample.xlsx	# Excelファイル

そのフォルダをPythonコード内で指定するには、以下のように書きます。

import pathlib    # pathlibのインポート
file_path = pathlib.Path(__file__).parent / "workbooks" # エクセルファイルの保存フォルダの相対パスを作成

2行目を詳細に解説します。

pathlib.Path(__file__)|実行中のスクリプトのファイルパス取得

pathlib.Path(__file__)	# pathlibライブラリのPathクラスをインスタンス生成

__file__ は「実行中のスクリプトのファイルパス」を表す特別な変数です。

pathlib.Path(__file__) とすることで、スクリプトファイルのパス(そのPythonファイルがある場所)を Pathオブジェクト に変換できます。

例えば、Usersファイルの中にapp.pyというファイルがある場合、pathlib.Path(__file__) は以下の意味となります。

C:\Users\app.py

.parentプロパティ|親フォルダの取得

pathlib.Path(__file__).parent	# Pathオブジェクトの親フォルダ

Pathオブジェクトの .parentプロパティを使うと、そのファイルがある 親フォルダ を取得できます。

Usersファイルの中にapp.pyというファイルがある場合、.parentを付けることで以下の意味となります。

C:\Users

/ 演算子によるパス結合

pathlibの特徴的な書き方として、パスの結合に / 演算子 が使えます。

文字列を単純に結合するのではなく、OSに応じて正しい区切り文字(\ や /)を自動で選んでくれる のがポイントです。

これを使用することで、Pythonファイルを保存したフォルダの中の「workbooks」というフォルダを指定することができます。

import pathlib    # pathlibのインポート
file_path = pathlib.Path(__file__).parent / "workbooks" # エクセルファイルの保存フォルダの相対パスを作成

このコードの変数file_pathには以下の文字列が格納されます(Windowsの場合)。

C:\Users\workbooks

このサイトにおけるファイルの保存場所のルール

このサイトで学習を進めていくにあたり、作成するPythonファイルやExcelファイルは以下のような階層で保存することを推奨します。

チャプター毎にフォルダを分け、Pythonファイルはそのフォルダ直下に保存。Excelファイルはworkbooksというフォルダを作ってその中に保存しましょう。

業務自動化学習/					  # 学習フォルダ
 ├── Chap1/						 # チャプター1の保存フォルダ
 │   ├── Chapter1-1.py
 │   ├── Chapter1-2.py
 │   ├── ・・・
 │   └── workbooks/				# チャプター1のエクセルファイルの保存フォルダ
 │       ├── sample1-1.xlsx 
 │       ├── sample2-1.xlsx
 │       ├── ・・・
 │
 ├── Chap2/						 # チャプター2の保存フォルダ
 │   ├── Chapter2-1.py
 │   ├── ・・・
 │   └── workbooks/				# チャプター2のエクセルファイルの保存フォルダ
 │       ├── ・・・

今後紹介するコードは全て、この階層で保存されていることを前提としています。

是非このように保存して下さい。

保存先フォルダを指定しよう|サンプルコードの紹介

先ほどの新規Excelファイルを作成するコードを、pathlibライブラリを使って保存場所を指定するように変更しましょう。

import openpyxl, pathlib    	# openpyxlとpathlibのインポート
file_path = pathlib.Path(__file__).parent / "workbooks" # エクセルファイルの保存フォルダの相対パスを作成

new_book = openpyxl.Workbook()  # Workbookクラスのインスタンス生成
sheet = new_book.active         # アクティブなシートを取得
sheet['A1'] = "Pythonで作成したExcel"           # A1セルに文字列を入力
new_book.save(file_path / "new_excel.xlsx")    # 「new_excel.xlsx」というファイル名で保存

7行目で、ファイル名に保存先のフォルダパスを結合して渡しています。

これにより、workbooks フォルダの中に new_excel.xlsx が保存されます。

7行目は以下のように書くこともできます、管理しやすいように変数を利用しましょう。

new_book.save(pathlib.Path(__file__).parent / "workbooks" / "new_excel.xlsx")

まとめ|Excel新規作成と保存先指定の基本

この記事では、PythonでExcelファイルを新規作成する方法 を学びました。

  • Workbook()クラス:新しいExcelブックを作成
  • activeプロパティ:アクティブなシートを取得
  • セルオブジェクト[]:セルにデータを読み書き
  • save()メソッド:Excelファイルとして保存
  • pathlibライブラリ:スクリプトの場所を基準に保存先を指定

これにより、Excelファイルを 任意の場所に自動生成して保存する仕組み を作れるようになりました。

次回は、この基礎を応用して Excelからデータを読み込む方法 に進んでいきます。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいExcel自動化学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

業務自動化の記事一覧

次のページ>>

よくある質問(FAQ)|Excelファイルの新規作成と保存

Q1. openpyxlでExcelファイルが「作成できない/保存できない」(PermissionError・FileNotFoundErrorなど)と出ます。原因と対処法は?

代表的な原因は次のとおりです。

順に切り分けると解決しやすくなります。

  • ファイルをExcelで開いたまま:同名ファイルを既に開いていると書き込みが拒否されます。該当ファイルやプレビュー(エクスプローラーのプレビュー表示)を閉じてから再実行してください。
  • 保存先フォルダが存在しない:指定したフォルダが未作成だと保存できません。事前にフォルダを用意してから保存してください(学習用の固定フォルダを用意しておくと安全です)。
  • 権限不足(書き込み不可):ネットワークドライブや「Program Files」直下などは権限で弾かれることがあります。ユーザープロファイル配下(ドキュメント等)のフォルダを使いましょう。
  • パスのタイプミス・禁則文字:日本語・全角スペース・記号を含むパスでトラブルが起きることがあります。フォルダ名・ファイル名を確認し、必要なら半角英数字中心の名前に見直します。
  • 相対パスの誤解:実行方法によって“現在の作業ディレクトリ(カレントディレクトリ)”が変わるため、相対パスが想定外の場所を指すことがあります。後述の「Q2」を参考に、実行環境に左右されにくい指定に切り替えましょう。

Q2. 保存先(パス)を“プロジェクト配下に固定”したいです。相対パスと絶対パス、カレントディレクトリの考え方は?

初学者のつまずきの多くは「相対パスは実行時の場所に依存する」点にあります。

ターミナルでの実行、エディタの実行ボタン、タスクスケジューラなど、起動手段が変わると相対パスの基準も変わるため、意図しない場所に保存されがちです。

確実にプロジェクト配下へ保存したい場合は、次の考え方を押さえましょう。

  • 基準点を“スクリプト自身の位置”に置く:スクリプトファイルが置かれているフォルダを基準に、そこから目的の保存フォルダ(例:workbooks)へパスを伸ばします。これなら起動方法が変わっても保存先は安定します。
  • OS非依存のパス結合を使う:手作業で「\」や「/」を連結せず、パス専門の仕組みでフォルダとファイル名を結合すると、Windows/macOSどちらでも安全に扱えます。
  • 保存フォルダの存在確認:保存先が無ければ先にフォルダを作る、という流れを習慣化しましょう。学習用プロジェクトでは、最初に「成果物置き場」を1つ決めておくと迷いません。

この設計にしておくと、後からツールを配布したり自動実行(タスクスケジューラ等)したりする際も、保存先がブレないのでトラブルが激減します。

Q3. 作成したファイルを開くと「拡張子が正しくない」「形式が違う可能性がある」と警告が出ます。xlsx/xls/xlsmの違いは?

openpyxlが標準で扱うのはOffice Open XML形式(.xlsx)です。

ここを理解しておくと警告を避けられます。

  • .xlsx(推奨):openpyxlが新規作成・保存に適した形式。マクロは含めません。Excel 2007以降の互換性が高く、現在の主流です。
  • .xls(旧形式):古いバイナリ形式です。拡張子だけ.xlsにしても、実体が.xlsxだとExcelが形式不一致の警告を表示します。古い.xlsを前提にする必要がない限り、.xlsxを使用してください。
  • .xlsm(マクロ有効ブック):拡張子は似ていますが、マクロ(VBA)を含む形式です。openpyxlはVBAマクロの作成・編集を目的としていません。マクロが必要な場合は、Excel側でテンプレートを用意し、用途に応じて使い分ける設計が安全です。

ポイントは、ファイルの中身と拡張子を一致させること。

学習段階では迷わず「.xlsx」を使い、別形式が必要になったときだけ要件を整理してから切り替えるのがおすすめです。

次のステップ:業務自動化を「実務レベル」まで引き上げたい方へ

このコース(Chapter1〜2)の無料教材では、Python と Excel(openpyxl)を使って「単純作業を自動化する」ための基本的な考え方やコードの書き方を身につけることができます。

ただ、実際の業務で使おうとすると、次のような壁にぶつかりがちです。

  • 社内で使える「ちゃんとしたツール」っぽい形にしたい
  • エラーが出たときに、自分で原因を特定して直せない
  • 副業したくても本当に正しく動くか自信がない

そこで、格安で販売中のChapter3以降では「現場でそのまま使える業務自動化スクリプト」を作りながら学べる構成としました。

そこでは、Chapter2までで学んだ内容を土台にしつつ、

  • 実務でよくあるパターン別のサンプルコード
  • トラブルシューティング(エラーの潰し方)の考え方
  • より高度な自動化を実現するWebスクレイピングの基本
  • 業務自動化スキルを用いて副業で稼ぐための具体的な方法

などを通して、「自分の職場に合わせてカスタマイズできる力」を身につけることを目指します。

教材は↓↓のリンクボタンの販売所で購入するとPDFやpyファイルでダウンロードできます。

もしくは、各学習記事内で会員登録して頂くと、そのままこのサイト内で全ての記事を読めるようになります。

どこよりも安く手実践的なこの教材を、是非ご活用下さい^^

<<前のページ

業務自動化の記事一覧

次のページ>>

記事URLをコピーしました