• 締切済み

エクセルテンプレートのパスワード保護

既存のエクセルテンプレートファイル(xltファイル)にvbaを使用し読取パスワードをかけることは可能でしょうか。 SaveAs で行っても上手くいかなかったので質問させていただきました。 よろしくお願いいたします。 【excel2010 使用】

みんなの回答

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。 動作確認に手間取りましたが、私の環境では、以下のサンプルで、 テンプレートブックに設定した読み取りパスワードを 新しいブックにも反映することが出来ています。 ところで、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

回答No.1

Dim book As Workbook Workbooks.Open Filename:="C:¥Test.xlt" Set book =ActiveWorkbook book.SaveAs Filename:=:="C:¥Test.xlt", Password:="pass" book.close SaveAsでやるのであれば、これでできると思います。

関連するQ&A