ホテルを選ぶとき、これだけは譲れない条件TOP3は?

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

【excel2010 使用】

A 回答 (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
    • good
    • 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でやるのであれば、これでできると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!