Pythonでパスワード設定されているExcelを解除する方法

Python

PythonでExcelの読み取りパスワードを設定してしてあるを解除する方法が見つけられなかったので記事に残します。

結論のコードを先に

import win32com.client

excel = win32com.client.Dispatch('Excel.Application')
book = excel.Workbooks.Open('sample.xlsx', Password='password')

excel.DisplayAlerts = False
book.SaveAs('sample.xlsx', Password='')
excel.DisplayAlerts = True

book.Close()

上記コードはwindowsで動作します。macでは動作しませんでした。win32を使用するので当然ですが。

以下、丁寧な解説をしていきます。

必要なモジュールのインストール

win32com.clientを使用するので ‘ pywin32 ‘ をpipでインストールします。

pip install pywin32

読み取りパスワード付きExcelファイルを開いて閉じるコード

import win32com.client

excel = win32com.client.Dispatch('Excel.Application')
book = excel.Workbooks.Open('sample.xlsx', Password='password')

book.Close()

1行目でwin32com.clientをインポート

3行目でDispatchクラスでExcel.Applicationを指定してインスタンス化

4行目でsample.xlsxというExcelファイルをパスワードに ‘ password ‘を指定してOpenする。

sample.xlsx と ‘ password ‘ 部分はそれぞれご自身の環境で読み替えてください。

パスワードなしで上書き保存する

import win32com.client

excel = win32com.client.Dispatch('Excel.Application')
book = excel.Workbooks.Open('sample.xlsx', Password='password')

book.SaveAs('sample.xlsx', Password='')

book.Close()

book.SaveAsで保存ファイル名を指定(ここではsample.xlsxに上書き。別名で保存も可能)、新しいパスワードを指定する(ここではパスワードなしを指定)

上記コードでは確認ダイアログが表示されるので画面をクリックする必要が生じます。

読み取りパスワードを設定して閉じる

ファイルを開くときにパスワードなしを指定して、保存するときに新しいパスワードを指定(ここでは’password’)

import win32com.client

excel = win32com.client.Dispatch('Excel.Application')
book = excel.Workbooks.Open('sample.xlsx', Password='')

excel.DisplayAlerts = False
book.SaveAs('sample.xlsx', Password='password')
excel.DisplayAlerts = True

book.Close()

まとめ

完成版コード。下記コードを実行すると読み取りパスワードが解除された状態に上書き保存されます。

import win32com.client

excel = win32com.client.Dispatch('Excel.Application')
book = excel.Workbooks.Open('sample.xlsx', Password='password')

excel.DisplayAlerts = False
book.SaveAs('sample.xlsx', Password='')
excel.DisplayAlerts = True

book.Close()

コメント

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