前提・実現したいこと
エクセルの「読み取りパスワード」を、エクセルを開かずに設定したいです。
プログラムの使用者は非エンジニアで、大量にあるエクセルへの鍵付けを自動化したいからです。
試したこと
(1) VBAで行う場合、下記のコードで可能でした
ActiveWorkbook.SaveAs Filename:="FilePath", Password:="password"
しかしいちいちマクロ画面を開く必要があり、非エンジニアにはわかりづらい事。
またすでに編集が完了してある大量のファイルに同様の設定を行い為、最善の解決とは思えません。
(2) PythonのOpenPyxlで設定する
OpenPyxlにはシートにパスワードをかける事は可能ですが、ブックにかける事はできないようです。
まとめ
どんな方法でも結構です(言語でもshellでも)
何か解決に近づく方法がございましたらお教え頂ければ幸いです。
解決策
できました。
まさに理想の形で!
otunさんありがとうございました!
vba
1Option Explicit 2 3Sub setPasswordExcelFile() 4 Dim delimiter As String 5 If Application.OperatingSystem Like "*Mac*" Then 6 delimiter = "/" 7 Else 8 delimiter = Chr(92) 9 End If 10 11 'バックグラウンド実行 12 Application.ScreenUpdating = False 13 14 'ファイル名作成 15 Dim strFileName As String 16 strFileName = "a4.xlsx" 17 18 'ファイルパス指定 19 Dim strFilePath As String 20 strFilePath = ThisWorkbook.Path & delimiter & strFileName 21 22 Dim wb As Workbook 23 Set wb = Workbooks.Open(strFilePath) 24 ActiveWindow.Visible = False 25 wb.Activate 26 27 'ファイル保存 28 Application.DisplayAlerts = False '警告メッセージ非表示 29 wb.SaveAs FileName:=strFilePath, _ 30 Password:="Password" 31 Application.DisplayAlerts = True '警告メッセージ非表示解除 32 33 '完了メッセージ 34 MsgBox "ファイルの保存が完了しました" & vbCrLf & _ 35 "保存先は" & strFilePath & "です。" 36 Application.ScreenUpdating = True 37End Sub 38 39 40 41'Sub Clic() 42' Module2.setPasswordExcelFile 43'End Sub 44
回答2件
あなたの回答
tips
プレビュー