次のプログラムをVSコードでRUNしたところ下記のエラーが出ました。対処方法は?
from openpyxl import load_workbook
from openpyxl.styles import Font
wb = load_workbook("売上実績.xlsx")
ws = wb.active
blue_font = Font(name="MS P明朝", color="0000FF", size=18, bold=True)
for row in ws["B2:F2"]:
for cell in row:
cell.font = blue_font
wb.save("売上実績_変更後.xlsx")
結果
PS C:\Users\DELL> & C:/Users/DELL/AppData/Local/Programs/Python/Python313/python.exe "c:/Users/DELL/OneDrive/Python/本python&excel/Chapter3/Section026/set_font.py"
Traceback (most recent call last):
File "c:\Users\DELL\OneDrive\Python\本python&excel\Chapter3\Section026\set_font.py", line 4, in <module>
wb = load_workbook("売上実績.xlsx")
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\Users\DELL\AppData\Local\Programs\Python\Python313\Lib\site-packages\openpyxl\reader\excel.py", line 346, in load_workbook
reader = ExcelReader(filename, read_only, keep_vba,
data_only, keep_links, rich_text)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python313\Lib\site-packages\openpyxl\reader\excel.py", line 123, in __init__
self.archive = _validate_archive(fn)
~~~~~~~~~~~~~~~~~^^^^
File "C:\Users\DELL\AppData\Local\Programs\Python\Python313\Lib\site-packages\openpyxl\reader\excel.py", line 95, in _validate_archive
archive = ZipFile(filename, 'r')
File "C:\Users\DELL\AppData\Local\Programs\Python\Python313\Lib\zipfile\__init__.py", line 1367, in __init__
self.fp = io.open(file, filemode)
~~~~~~~^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '売上実績.xlsx'
PS C:\Users\DELL>
エラーの原因は FileNotFoundError(ファイルが見つからないエラー)
ターミナルの表示を見ると、原因がはっきりとわかります。
エラーの原因
ターミナルの現在地(カレントディレクトリ)が C:\Users\DELL になっているのに対し、読み込もうとしている 売上実績.xlsx はもっと深い階層(Chapter3/Section026/)にあるため、Pythonがファイルを見つけられていません。
対処方法:最も確実な3つの方法
1. ファイルを右クリックして実行(推奨)
VS Codeの左側のエクスプローラーにある set_font.py を右クリック し、「ターミナルで Python ファイルを実行」 を選択してください。これにより、VS Codeが自動的にファイルの場所まで移動してから実行してくれます。
2. 「▷ボタン」の設定を変更する
右上の▷ボタンで常に正しく動くようにするには、VS Codeの設定を変更します。
Ctrl + ,(カンマ)を押して設定を開く。
検索欄に 「terminal.integrated.cwd」 と入力。
「Terminal > Integrated: Cwd」 の設定を、現在のファイルの場所で開くように調整するか、Python設定の 「Execute In File Dir」(ファイルがあるディレクトリで実行する)にチェックを入れます。
3. プログラムの中で「場所」を自動取得するように書き換える
コードの冒頭に数行追加することで、プログラムが自分自身の場所を特定し、同じフォルダにあるExcelを探しに行くようにできます。
python
import os
from openpyxl import load_workbook
from openpyxl.styles import Font
# プログラムファイル(set_font.py)がある場所を特定する
base_path = os.path.dirname(__file__)
file_path = os.path.join(base_path, "売上実績.xlsx")
# 特定した場所にあるファイルを開く
wb = load_workbook(file_path)
ws = wb.active
# --- 以下、元のプログラムと同じ ---
blue_font = Font(name="MS P明朝", color="0000FF", size=18, bold=True)
for row in ws["B2:F2"]:
for cell in row:
cell.font = blue_font
# 保存先も同じフォルダにする
wb.save(os.path.join(base_path, "売上実績_変更後.xlsx"))
まとめ
今のエラーは、「プログラムを動かしている場所」と「Excelがある場所」がズレているために起きています。まずは 「1. 右クリックして実行」 を試してみてください。これだけで解決するはずです。
ファイルを右クリックして実行でもエラーでした。
右クリックでの実行でもエラーが解消されないのは、VS Codeのターミナルが「プログラムがあるフォルダ」へ自動的に移動(cd)していないことが原因です。
エラー画面の末尾にある PS C:\Users\DELL> という表示が、現在の「作業場所」がまだユーザーフォルダのままであることを示しています。
2025年現在、最もスマートで確実な解決策は以下の設定変更です。
解決策:VS Codeの「実行時ディレクトリ」設定をONにする
この設定を一度だけ行えば、今後どのような深い階層のフォルダでも、▷ボタンや右クリックで正しく実行できるようになります。
VS Codeで Ctrl + , (カンマ) を押して設定画面を開きます。
上部の検索バーに executeInFileDir と入力します。
表示された 「Python > Terminal: Execute In File Dir」 という項目のチェックボックスを オン(チェックあり) にします。
設定画面を閉じ、もう一度 set_font.py を実行してください。
なぜこれで解決するのか
これまでの状態: VS Codeは「いま開いている一番上のフォルダ」を基準にプログラムを動かそうとしていました。そのため、サブフォルダにある 売上実績.xlsx を見つけられませんでした。
設定後の状態: ▷ボタンを押した瞬間に、VS Codeが自動的に cd c:/Users/…/Section026/ と打ち込んでフォルダを移動してから、Pythonを実行してくれるようになります。
もしこれでもダメな場合(OneDrive特有の問題)
OneDrive上のフォルダ(OneDrive/Python/…)を使っている場合、クラウド同期の影響でファイルパスが正しく認識されないケースが稀にあります。その場合は、一度デスクトップなどのOneDrive以外の場所にフォルダをコピーして、同じ操作を試してみてください。
これで「プログラムと同じ場所にあるExcel」を確実に読み込めるようになります。
うまく行きました。
PS C:\Users\DELL\OneDrive\Python\本python&excel\Chapter3\Section026> & C:/Users/DELL/AppData/Local/Programs/Python/Python313/python.exe "c:/Users/DELL/OneDrive/Python/本python&excel/Chapter3/Section026/set_font.py"
PS C:\Users\DELL\OneDrive\Python\本python&excel\Chapter3\Section026>
無事に解決して良かったです!
ターミナルのログを見ると、1行目に自動で cd “c:/Users/DELL/OneDrive/…” というコマンドが走り、「プログラムがある場所まで移動してから実行」 という正しい動作に変わったことが確認できます。
今回の学びのポイント
プログラミングにおいて、ファイルを開くときは「パス(住所)」の概念が非常に重要です。
相対パス: load_workbook(“売上実績.xlsx”) のようにファイル名だけ書くと、「今いる場所(カレントディレクトリ)」から探します。
カレントディレクトリ: ターミナルの左側に表示されている PS C:\Users\DELL…> の部分です。
今回の設定変更(Execute In File Dir)によって、「プログラムを開いたら、そこをカレントディレクトリにする」という設定が有効になったため、ファイル名だけで正しく読み込めるようになりました。
これで、本にあるサンプルコードもストレスなく次々と試していけるはずです!Excelの書式設定(フォント、色、サイズなど)の自動化、ぜひ楽しんでください。
ターミナルでの実行過程
& C:/Users/DELL/AppData/Local/Programs/Python/Python313/python.exet とは何か?
ターミナルのその長い一行は、VS Codeがあなたの代わりに「PCへの正式で詳細な命令」を組み立てた結果です。
意味を分解すると、以下の3つの要素で構成されています。
1. & (アンパサンド)
これはPowerShellにおける「実行演算子」という記号です。
意味: 「あとに続くパス(住所)にあるプログラムを動かしなさい」という命令です。
なぜ必要か: 今回のようにパスの中に「スペース」や「記号(&など)」が含まれている場合、PCが「どこまでがアプリの名前か」を正しく判断できなくなるため、この記号をつけて「ここから先がアプリの場所だよ」と教える役割があります。
2. C:/Users/…/python.exe
これは「Pythonというソフトウェア本体」がインストールされている場所(絶対パス)です。
あなたが以前ターミナルで手入力した python という短い単語の「正体」です。
VS Codeは間違いが起きないように、あえて省略せずに「この場所にある本物のPython.exeを使いなさい」とフルネームで指定しています。
3. “c:/Users/…/set_font.py”
これは「実行したいプログラムファイル」の場所(絶対パス)です。
Python(本体)に対して、「このファイルを読み込んで処理しなさい」と渡しているデータです。
全体を翻訳すると…
この一行は、PCに対して以下のように命令しています。
「(&)実行せよ! (C:/…/python.exe)この場所にあるPythonというソフトを使って、 (”c:/…/set_font.py”)この場所にあるプログラムファイルの中身を!」
なぜこんなに長くなったのか?
以前は python set_font.py と短く打っていましたが、VS Codeは「PCのどこからでも、どのPythonのバージョンでも、100%確実に、指定したファイルを間違いなく動かす」ために、あえてこのような「住所(パス)を省略しない正式な書き方」を自動で作成して実行しています。
2025年現在、VS Codeなどの高機能エディタはこのように「裏側で確実に動くコマンド」を自動生成してくれるため、ユーザーは複雑な住所を意識せずに開発に集中できるようになっています。



コメント