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()
まとめ
完成版コード。下記コードを実行すると読み取りパスワードが解除された状態に上書き保存されます。
ITスキルを磨きたいなら、Tech Academyがおすすめです。今すぐこちらからチェックして、あなたのスキルを次のレベルへと引き上げましょう!
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()
コメント