- 締切済み
エクセルテンプレートのパスワード保護
既存のエクセルテンプレートファイル(xltファイル)にvbaを使用し読取パスワードをかけることは可能でしょうか。 SaveAs で行っても上手くいかなかったので質問させていただきました。 よろしくお願いいたします。 【excel2010 使用】
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは。 動作確認に手間取りましたが、私の環境では、以下のサンプルで、 テンプレートブックに設定した読み取りパスワードを 新しいブックにも反映することが出来ています。 ところで、Excel2010でしたらば、 .xlt 形式より、.xltxや.xltmの方が互換の問題が無い分、有利な気がします。 .xlt .xltx .xltm の違いは .xls .xlsx .xlsm に模して考えると解り易いと思いますが、 .xltファイルをテンプレートとして新規作成したブックであっても、 [名前を付けて保存]ダイアログを開いた時に表示されるファイル形式(拡張子)は、 Excelのオプション設定(デフォルトでは、Excelブック.xlsx )によって既定ですから、 .xltファイルを指定しても、.xlsファイルで保存するように促すような機能はないみたいです。 もう一点、 互換ブック(.xltや.xls)の方が、 現行のブック形式(.xltx .xltmや.xlsx .xlsm)よりも ファイルサイズは大きくなってしまいます。 何か事情があってのことでしたら、参考(後学)の為、訳を教えて頂けると有難いです。 特に理由がなかったとしたら、.xltx .xltm への移行を検討してみてください。 サンプル、3種のファイル形式で書いておきました。 Sub Re8307242() ' xlt 版 ' ' テンプレートブック、フルネーム Const sXLTFullName = "C:\Users\ユーザー名\AppData\Roaming\Microsoft\Templates\テンプレートブック名.xlt" Const myPass = "1234" ' パスワードを指定 ' With Workbooks.Add(Template:=sXLTFullName) With Workbooks.Open(Filename:=sXLTFullName) Application.DisplayAlerts = False .SaveAs Filename:=sXLTFullName, _ FileFormat:=xlTemplate8, Password:=myPass Application.DisplayAlerts = True .Close End With End Sub Sub Re8307242m() ' xltm 版 ' ' テンプレートブック、フルネーム Const sXLTFullName = "C:\Users\ユーザー名\AppData\Roaming\Microsoft\Templates\テンプレートブック名.xltm" Const myPass = "1234" ' パスワードを指定 ' With Workbooks.Add(Template:=sXLTFullName) With Workbooks.Open(Filename:=sXLTFullName) Application.DisplayAlerts = False .SaveAs Filename:=sXLTFullName, _ FileFormat:=xlOpenXMLTemplateMacroEnabled, Password:=myPass Application.DisplayAlerts = True .Close End With End Sub Sub Re8307242x() ' xltx 版 ' ' テンプレートブック、フルネーム Const sXLTFullName = "C:\Users\ユーザー名\AppData\Roaming\Microsoft\Templates\テンプレートブック名.xltx" Const myPass = "1234" ' パスワードを指定 ' With Workbooks.Add(Template:=sXLTFullName) With Workbooks.Open(Filename:=sXLTFullName) Application.DisplayAlerts = False .SaveAs Filename:=sXLTFullName, _ FileFormat:=xlOpenXMLTemplate, Password:=myPass Application.DisplayAlerts = True .Close End With End Sub
- whitesneaker
- ベストアンサー率0% (0/0)
Dim book As Workbook Workbooks.Open Filename:="C:¥Test.xlt" Set book =ActiveWorkbook book.SaveAs Filename:=:="C:¥Test.xlt", Password:="pass" book.close SaveAsでやるのであれば、これでできると思います。