【Word VBA】既存の文書から新規作成するWordマクロ

2014年1月15日

Wordには、「既存の文書から新規作成する」という機能がありますが、これをWordマクロで実行する場合のコードです。

詳細は、Excel MVPのよねさん の「既存の文書から新規作成する 」の記事に書かれていますからご覧ください。

既存文書を参考にして新しい文書を作る場合、間違って修正したものを保存してしまうと困りますよね。

私の場合、セミナーで用いるサンプル文書がありますが、セミナー中に間違ってサンプル文書に修正を加えてしまわないように、毎回新規文書としてファイルを開きます。便利です。

そのようなときに、この「既存の文書から新規作成する」という機能を使います。

Wordに機能があるのでわざわざマクロにしなくてもいいのですが(汗)、別の用途のマクロの途中で使っています。

マクロの解説

11行目の FileDialog(msoFileDialogFilePicker) というオブジェクトを用いて、ファイルのパスを取得します。

[ファイルを開く] ダイアログを起動して、そこに表示されるファイルの種類を指定できます。
今回は、Word文書のみ開きたいので、Filtersプロパティで指定します。

選択したファイルを基に、新規ファイルを作ります。

Templateとして.dotや.dotxのひな形ファイルを指定したくなるのですが、ここに通常のWord文書を指定してもいいのです。

24行目の Documents.Add Template:=.SelectedItems(1)

.SelectedItems(1)プロパティにて、ダイアログで開かれているファイルのパスを取得してテンプレートに設定しました。

すると、この選択した文書と全く同じ(ページ設定も文書の内容も)ファイルが新たに作成されます。

マクロ


Sub ファイル作成_既存ファイルから()

 Dim myFD As FileDialog

 If Application.Version < 11 Then
  MsgBox "Word 2002以前では動作しません。"
  Exit Sub
 End If
 
 'ファイルの選択ダイアログ
 Set myFD = Application.FileDialog(msoFileDialogFilePicker)

 With myFD
  .AllowMultiSelect = False
    
  With .Filters
   'ファイルの種類をクリア
   .Clear
   'ファイルの種類を追加
   .Add "Word文書", "*.doc; *.docx"
  End With
  
  If .Show = -1 Then
   Documents.Add Template:=.SelectedItems(1)
  End If
  
 End With
 
 Set myFD = Nothing
 
End Sub

-コード
-,