Pythonで大量エクセルに一括で自動パスワード設定する方法

※記事内に広告が含まれる場合があります。
Pythonでエクセルにパスワードを設定 テクノロジー
スポンサーリンク

過日、同僚と話していて500件のエクセルBOOK全てにパスワードを付けて相手に送ってくださいと言われたので手作業でがんばったんだけどめちゃ大変だったよ~なんか自動化できないの?と先日相談を受けました。

確かに同じ繰り返し作業であれば自動化した方が楽ですし、Pythonで自動化できそうだなと思いましたので私がプログラムを作成してみました。

具体的にはPythonライブラリのwin32comを利用してエクセルにパスワードを付ける処理を自動化しましたのでご紹介致します。

スポンサーリンク

ExcelのBOOKの保護とは?

全ての人がエクセルを開いて閲覧することはできますがパスワードを解除しないと編集ができない機能です。パスワードを解除するにはメニューバーの「校閲 > ブックの保護 > パスワードを入力」の手順で入力します。

Pythonライブラリのwin32.comでパスワードを設定する

エクセルにパスワードを設定する方法はいくつかありますが、今回はPythonライブラリのwin32.comを利用する例をご紹介いたします。

ライブラリが入っていない場合はインストールします。

pip install pywin32
ポイント

パスワードを設定し元のファイルに上書きしないこと。問題発生時にもとに戻せないリスクがあるので必ず違うファイル名で保存しましょう

エクセルにパスワードを設定する全コードは下記で関数化しました。

import win32.com.client as win32

#エクセルにパスワード付与する関数
def set_pass(in_FilePath,out_FilePath,pass):

    ex = win32.gencahe.EnsureDispatch('Excel.Application')
    ex.DisplayAlerts = False
    wb = excel.Workbooks.Open(in_FilePath)
    wb.SaveAs(out_FilePath,51,pass)
    wb.Clows()
    excel.Application.Quit()

    return

set_passいう関数作成インプット情報下記です
in_FilePath:パスワードをかける元のエクセルのpath
out_FilePath:パスワード設定後のエクセル保存先
pass:任意のパスワード

この関数を利用することでエクセルにパスワードを設定し、BOOKを保護することができます。

大量ファイルをfor文でループしてパスワード設定

エクセルにパスワードを設定する関数set_passをfor文に入れれば次々にエクセルにパスワードを設定することができます。

別のエクセルに下記の「元path,コピーPath,パスワード」を設定したとしましょう。このエクセルを読み込んでパスワードをかける例です。

元Path コピーPath パスワード
sample_1.csv copy_sample_1.csv 任意パスワード1
sample_2.csv copy_sample_2.csv 任意パスワード2

エクセルの中身に沿って全ファイルにパスワードを設定するpythonコードは下記です。

import pandas as pd

#エクセルでpandasを読み込む
df1 = pd.read_excel(input_excel)

for i in df1.values.tolist() :

    set_pass(i[0],i[1],"free_password")

これで全てのエクセルにパスワードを設定することができたと思います。コード数も少ないのでやり方さえわかってしまえば色々応用できると思います。

最後に私がPythonの勉強をして入門者から中級者までにこの本1冊あれば習得できるおすすめ本記事も書いております【本1冊で】Python入門から中級までなれるおすすめ本ご興味がある方は御覧くださいませ。

他にもPython関連の記事を書いておりますのでご興味のあるかたはご覧くださいませ。

Python関連記事の一覧→テクノロジー

タイトルとURLをコピーしました