【Wordマクロ】差し込み印刷でレコード毎に別ファイルで保存(その2) | みんなのワードマクロ

みんなのワードマクロ

ワードマクロで、文書作成とオフィス事務を効率化!!

以前紹介しました「【Wordマクロ】差し込み印刷でレコード毎に別ファイルで保存 」にコメント をいただきましたので、マクロを少し修正してみました。

上記の記事では、ファイルの保存形式がWord 2003までの.doc形式でした。

これを、.docx形式にしたいということです。



▼このマクロでできること

差し込み印刷用のメイン文書に宛先のリスト(Excelファイルなど)が設定されている状態でマクロを実行します。

すると、このリストに掲載されたレコードをすべて差し込んだファイルが作成されます。

ファイルの保存形式を、Word 2007以降の.docx形式にします。


▼マクロの解説

.docx形式での保存なので、赤文字のように拡張子を変更しました。

それと同時に、フォーマットを青文字のように変更しました。

.docx形式のファイルは、XML形式のファイルなのです。

ここを、wdFormatDocument (.doc形式)のままにしておくと、拡張子(.docx)と整合がとれないためエラーになります。


▼マクロ

Sub 差し込み印刷_レコード毎に別ファイルで保存2()

 Dim i As Integer
 Dim iMax As Integer
 Dim myName As String
 Dim myMainDoc As Document
 Dim myNewDoc As Document
 
 Set myMainDoc = ActiveDocument

 With myMainDoc.MailMerge
 
  'レコード数の設定
  .DataSource.ActiveRecord = wdLastRecord
  iMax = .DataSource.ActiveRecord
 
  '新規文書に書き出す
  .Destination = wdSendToNewDocument
 
  '空白の差し込みフィールドを印刷しない
  .SuppressBlankLines = True
 
  For i = 1 To iMax

   'レコードの指定
   With .DataSource
    .FirstRecord = i
    .LastRecord = i
    .ActiveRecord = i
   End With
 
   '文書作成(差し込みエラー時に停止)
   .Execute Pause:=True
 
   'ファイル名に用いる文字列(項目名を設定してください)
   myName = .DataSource.DataFields("名前").Value
 
   '新規文書に名前をつけて保存
   Set myNewDoc = ActiveDocument
   If myName <> "" Then
    myNewDoc.SaveAs FileName:=myMainDoc.Path & "\" & _
            myName & ".docx", _
            FileFormat:=wdFormatXMLDocument, _
            AddToRecentFiles:=False
    myNewDoc.Close
   End If
   DoEvents
 
  Next i

 End With

 Set myMainDoc = Nothing
 Set myNewDoc = Nothing
 
End Sub



▼関連記事

【Wordマクロ】差し込み印刷でレコード毎に別ファイルで保存