none
[Excel] Workbooks.Open でテンプレートブック (*.xltx, *.xltm) そのものを開く RRS feed

  • 質問

  • ワークブックを Excel テンプレート (xltx [XlFileFormat.xlOpenXMLTemplate] または
    マクロ有効テンプレート xltm [XlFileFormat.xlOpenXMLTemplateMacroEnabled]) として
    保存するとそのブックをひな型とした新規ブックを開くことができますが、VBA でこの
    テンプレートブック自体を開く方法はないのでしょうか。

    Workbooks.Open メソッドでそのまま開くと新規ブックとして開いてしまいます。
    エクスプローラから手動で開くことはできますが、マクロで自動処理したいときなどは
    どうしたらいいのでしょうか。
    (名前から Workbooks.Open メソッドの Format 引数が使えるかと思っていたのですが
    実際に試したり調べたら用途がまったく違いました)

    追記。
    試していないけど、テンプレートブックって拡張子を xlsx / xlsm に変更すれば普通の
    ブックとして開けるのでしょうか。
    そうなら、拡張子を変更 -> 開いて編集して保存 -> 拡張子を戻す で対応できる?


    • 編集済み infade 2019年5月28日 2:03 改行位置の間違い
    2019年5月28日 2:01

回答

  • https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbooks.open

    EditableパラメータをTrueにすればいいと書かれてますね。

    • 回答としてマーク infade 2019年5月28日 3:00
    2019年5月28日 2:10
  • 追記。
    試していないけど、テンプレートブックって拡張子を xlsx / xlsm に変更すれば普通の
    ブックとして開けるのでしょうか。

    実験してみた限り、.xltx.xlsx は別物として扱われますね。

    "Excel テンプレート (*.xltx)" 形式として、空のブックを
    D:\Example1.xltx という名で作成し、それを
    D:\Example2.xlsx へとコピーしてみました。

    同様に、"Exce ブック (*.xlsx)" 形式として、空のブックを
    D:\Example3.xlsx という名で作成し、それを
    D:\Example4.xltx へとコピーしてみました。

    拡張子を変更した方をダブルクリックして開こうとした場合、エラーメッセージと共に拒絶されます。


    当方環境

    • Excel 2016 Ver 1904 (ビルド 11601.20204 クイック実行)
    • Excel 2016 Ver 1904 (ビルド 11601.20230 クイック実行)
    • 回答としてマーク infade 2019年5月28日 6:16
    2019年5月28日 3:01

すべての返信

  • https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbooks.open

    EditableパラメータをTrueにすればいいと書かれてますね。

    • 回答としてマーク infade 2019年5月28日 3:00
    2019年5月28日 2:10
  • https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbooks.open

    EditableパラメータをTrueにすればいいと書かれてますね。

    あ、本当だ。
    見逃してました。

    現在の Excel VBA のヘルプは基本的に英語版を自動翻訳したものなので内容が
    分かりづらいこともあって読んでも理解できていない部分が多いです。
    (本来なら本体の英語版を読めばいいんだろうけど致命的なことにプログラミングでは
    必須の英語はよく読めないし)

    ありがとうございました。

    2019年5月28日 3:00
  • 追記。
    試していないけど、テンプレートブックって拡張子を xlsx / xlsm に変更すれば普通の
    ブックとして開けるのでしょうか。

    実験してみた限り、.xltx.xlsx は別物として扱われますね。

    "Excel テンプレート (*.xltx)" 形式として、空のブックを
    D:\Example1.xltx という名で作成し、それを
    D:\Example2.xlsx へとコピーしてみました。

    同様に、"Exce ブック (*.xlsx)" 形式として、空のブックを
    D:\Example3.xlsx という名で作成し、それを
    D:\Example4.xltx へとコピーしてみました。

    拡張子を変更した方をダブルクリックして開こうとした場合、エラーメッセージと共に拒絶されます。


    当方環境

    • Excel 2016 Ver 1904 (ビルド 11601.20204 クイック実行)
    • Excel 2016 Ver 1904 (ビルド 11601.20230 クイック実行)
    • 回答としてマーク infade 2019年5月28日 6:16
    2019年5月28日 3:01
  • 追記。
    試していないけど、テンプレートブックって拡張子を xlsx / xlsm に変更すれば普通の
    ブックとして開けるのでしょうか。

    実験してみた限り、.xltx.xlsx は別物として扱われますね。

    "Excel テンプレート (*.xltx)" 形式として、空のブックを
    D:\Example1.xltx という名で作成し、それを
    D:\Example2.xlsx へとコピーしてみました。

    同様に、"Exce ブック (*.xlsx)" 形式として、空のブックを
    D:\Example3.xlsx という名で作成し、それを
    D:\Example4.xltx へとコピーしてみました。

    拡張子を変更した方をダブルクリックして開こうとした場合、エラーメッセージと共に拒絶されます。

    実験ありがとうございます。

    実はこちらでも質問した後に、回答を待っている間に結局試してみたのですが
    同じ結果になりました。

    なぜ、ワザワザここまで細かく分けているのかは謎だけど普通のブックと
    テンプレートブックでは中身が若干異なるようですね。

    普通のワークブック (xlsx) を マクロ有効ブック (xlsm) に変換したいときは
    xlsx ファイルを zip ファイルとして開き、/[Content_Types].xml と
    /xl/styles.xml を xlsm のものに置き換えて拡張子を xlsm に変更すると
    ワークブックをマクロ有効ブックにすることができるみたいですが同じように
    すればワークブックとテンプレートブックも相互変換できるかな。
    まあ、もう解決したのでこの辺は気が向いたときに試そうと思います。

    2019年5月28日 6:37