🤷‍♂️

Excelにまとめて画像ファイルを挿入する方法 Python編

2022/11/13に公開

解決したい問題

通常、ExcelのSheet内に画像を取り込みたいときは、メニューの挿入から画像を選択します。
しかし、それが何枚もとなると面倒臭いですよね?
さらに、業務などで日常的にとなると費やす時間は計り知れません。
今回はそんな方に向けた記事を紹介していきます。


対象となる人

プログラミングって何?なんか英語でつらつらと書くやつ??
そんなのさっぱりわからないしやりたくない、できない。というノンプログラマーの方に向けて丁寧に説明していきます。


解決策

Python(パイソン)というプログラム言語を使って、Excelへの画像貼り付けを自動化します。
待て待て、さっきノンプログラマーに向けてって書いてたよね?と思った方、安心してください。
プログラムはコピペで使えるので問題ありません。


ポイント

本来はPythonを利用するには開発環境を構築する必要があります。
その手間を省くために、今回は、Google ColaboratoryというGoogleが提供している無料(有料もあるが今回のレベルは無料でできる)で利用できるサービスを使用していきます。
Google Colaboratoryというのは簡単にいうと、AIに不可欠な機械学習をするためにデータ分析を行うようなハイスペックのパソコンをクラウド上で無料提供してくれているものです。さらに、インストールなども不要で、今回利用するPythonも簡単に利用出来るサービスです。
クラウドサービスですのでいろんなパソコンから利用できるのも嬉しいポイントです。


前提条件

Excel2007以降がインストールされていること
Googleアカウントを持っていること
WindowsOSまたはMacOS

手順

  1. クラウド上に画像ファイルを格納する場所を用意する
  2. Excelファイルを準備する
  3. プログラムをコピーする
  4. 実行
  5. ローカル(自分のパソコン)上にダウンロード
  6. 確認
  7. 以降の使用方法

1.クラウド上に画像ファイルを格納する場所を用意する

Google ドライブにログインします。

Googleドライブを開きます。

「新規」から「フォルダ」でimgフォルダを作成します。


imgフォルダで右クリック「アプリを開く」→「アプリを追加」から「Colaboratory」を選択しインストール


見当たらない場合は、検索窓に「Colaboratory」を入力


imgフォルダと同じ階層で右クリック→「その他」
表示さらた画面に以下のように記述

これで、Googleドライブをマウント(紐付け)します。

from google.colab import drive
drive.mount('/content/drive')

左の三角ボタンを押下して実行

同様に下記も実行します。
+コードから新規の入力可能欄を表示させて貼り付け

%cd "/content/drive/My Drive/"

左の三角ボタンを押下して実行

2.Excelファイルを準備する

空のエクセルでもテンプレートとなる書式のエクセルでも構いませんので準備してください。
ここでは、test.xlsxとします。
こちらはimgフォルダと同階層に配置します。

3.プログラムをコピーする

下記のプログラムソース(import osの行からprint(total_str)まで)をコピーしてテキストファイルに貼り付けます。


ファイル名をexcelautoimage.pyにして3で作ったimgフォルダと同列の階層(imgファイルの中ではありません)に保存します。

import os
import sys
import time
import openpyxl
import datetime
from pytz import timezone
from openpyxl.drawing.image import Image

fileName = "test.xlsx"
plus =10

#現在時刻の表示
now = datetime.datetime.now()
jst_now = timezone('Asia/Tokyo').localize(now)
print("処理を開始します。")
print(jst_now)

#処理時間計測用
tm_start = time.time()

#Excelに取り込みたい画像フォルダ
new_dir_name = 'img'

#画像挿入するエクセルファイルを指定
wb = openpyxl.load_workbook(fileName)
ws = wb["Sheet1"]

files = os.listdir(new_dir_name)
files_file = [f for f in files if os.path.isfile(os.path.join(new_dir_name, f))]
print(files_file)
cnt = 1

if len(files_file) < 1 :
  print('画像ファイルがありません。')
  sys.exit()

for pic in range(len(files_file)):
  
  #挿入する画像を指定
  img = Image(new_dir_name + '/' +  (files_file[pic]))
  
  #挿入位置を決めて画像を挿入
  ws.add_image(img, 'A' + str(cnt))
  #複数画像がある場合に挿入位置を何行ずらすか
  cnt = cnt + plus

#保存するExcel名
wb.save(fileName)

tm_end = time.time()
#処理のログ表示のためにprintという構文を使います。
print('画像の取り込みが完了しました。')
total = tm_end - tm_start
total_str = f'処理時間: {total:.1f}s({total/60:.2f}min)'
print(total_str)

4.実行

左上の三角ボタンを押下して実行

5.ローカル(自分のパソコン)上にダウンロード

「ファイル」→「ダウンロード」→「Microsoft Excel(.xlsx)」の順に選択してダウンロードしてください。

6.確認

test.xlsxを開くと画像ファイルが挿入されているかと思います。

7.以降の使用方法

Google Coraboratory自体は好きな名前で保存可能ですので、次回以降は配置する画像のみ変更して三角ボタンを押すだけで実行可能です。

Discussion