Word2010のVBAから複数ファイルを印刷する

Word2010のVBAから300個くらいのファイルを印刷しようとして、はまった。

  • プリンタのスプーラにがんがん溜まってしまい、溜まってるの20個を過ぎたあたりから、PCが遅くなりだし、しまいには固まってしまった。
  • 複数ページあるファイルなのに、最初の1ページしか印刷されないことが多発した。

で、試行錯誤した結果、以下でできるようになった。激しく実行環境依存だと思うが、一応、書いておく。


Private Sub PrintAFile(fName As String)
Dim wrd As Word.Application
Dim doc As Word.Document

' Word上のVBAでやってる場合でも、以下のように別途Wordオブジェクトを作っておくと、
' 複数ページあるファイルが全部印刷されるようになった。
' 理由はわからん。
Set wrd = CreateObject("Word.Application")
Set doc = wrd.Documents.Open(fName)

' 次行をしておくと、スプーラに溜まらない
wrd.Options.PrintBackground = False
doc.PrintOut
doc.Close
wrd.Quit
End Sub

Sub PrintFiles()
Call PrintAFile("G:\あああ.docx")
Call PrintAFile("G:\いいい.docx")
Call PrintAFile("G:\ううう.docx")
' 以下、大量に印刷するファイル名を列挙する
' 同じフォルダに集めて、そのフォルダ内のファイルを全部印刷するように書く方が楽かも。
End Sub