企業毎に中身が違うExcelファイルを100社にメール送信するとします。情報漏洩リスク回避のため、Excelに企業毎のパスワードを手動でかけることは付加価値を産まないので、自動化の検討候補になります。
ファイルにパスワードを付ける方法としていくつか選択肢がありますが、文字化けリスクが低いExcelにあるパスワード機能を利用するのがおすすめです。
本記事では、Excelにパスワードを付与するPython関数と、企業別に安全なパスワードを付与する方法についてご紹介いたします。
Excel(エクセル)にパスワード設定するPython関数を紹介
細かいExcel指示が可能なwin32comを利用します。公式Pyothonインストール時に入っているライブラリなのですぐに呼び出して利用できます。
Excelにパスワード付与するPython関数password_setのコードは下記です。変数はExcelの読み込み、書き出し、セットするパスワードを設定します。
- 指定Excelファイルを読み込む
- 上記1のExcelパスワード機能に指定パスワードを入れる
- ファイルを指定pathへ書き出す
import win32com.client as win32
#エクセルにパスワード付与
def password_set(input_excel,output_excel,password):
excel = win32.gencache.EnsureDispatch("Excel.Application")
excel.DisplayAlerts = False
wb = excel.Workbooks.Open(input_excel)
wb.SaveAs(output_excel,51,password)
wb.Close()
excel.Application.Quit()
#実行
input_excel=r"C:\Users\abi00\OneDrive\デスクトップ\test1.xlsx"
output_excel=r"C:\Users\abi00\OneDrive\デスクトップ\test2.xlsx"
password="2tsutech"
password_set(input_excel,output_excel,password)
上記関数を利用し、ループ処理することで企業毎に違うパスワードを設定することが可能になります。
複数Excelファイルに違うパスワードを自動設定する方法
企業毎にパスワード設定した指示書を利用し、ループ処理する方法
上記解説のExcelファイルにパスワードを設定するPython関数は「ExcelファイルのPath」と「パスワード」を入力するシンプルなものです。企業毎に異なる「ExcelファイルのPath」と「パスワード」の指示データを作成し、ループ処理すれば完了です。
例えば、Excelで下記データを用意して、PandasのDataFrameに読み込んでループ文で処理しました。
インプットするExcelpath | アウトプットするExcelpath | パスワード |
---|---|---|
1.xlsx | 1_1.xlsx | 2tsutech_1 |
2.xlsx | 2_1.xlsx | 2tsutech_2 |
3.xlsx | 3_1.xlsx | 2tsutech_3 |
import pandas as pd
#指示書Excelのpath
target_path="Excelの指示書のpath"
instructions=pd.read_excel(target_path)
for i in instructions:
#0:インプットするExcelpath
#1:アウトプットするExcelpath
#2:パスワード
password_set(i[0],i[1],i[2])
プログラムでループ処理する場合は、Excel1列目は0カウントになるので、上記表記になります。
パスワード設定を工夫することでセキュリティレベルを上げる
パスワードを先方にお知らせする手法はいくつかあります。よく見かける添付メールの後にパスワードのお知らせメールがくるものは漏洩リスクが高いです。パスワード設定する場合は、先方企業でしかわからないルールでパスワードを付与する方法がよいです。先方に事前に相談しなくても、上記ルールは工夫すれば作成できますので検討いただければと思います。
ご質問やご依頼について
記事やDX化のご質問や依頼はServiceをご覧くださいませ。