Wordマクロで文書を印刷するときはPrintOutメソッドをよく使います。
ページ範囲を指定して印刷を行う、下記のようなコードは一見問題無いように見えますが、これを実行すると「実行時エラー ’13’:型が一致しません。」とのエラーが発生します。
Option Explicit Public Sub Sample() ActiveDocument.PrintOut Range:=wdPrintFromTo, From:=2, To:=3 End Sub
どこが引っ掛かっているのかというと、「wdPrintFromTo」のときに指定する「From」と「To」。
実は「From」と「To」は文字列として指定しないと上記エラーが発生します。
これを解決するためには、下記のように「“」(ダブルクォーテーション)で囲むかCStr関数で文字列型にする必要があります。
Option Explicit Public Sub Sample() ActiveDocument.PrintOut Range:=wdPrintFromTo, From:="2", To:="3" End Sub Public Sub Sample2() ActiveDocument.PrintOut Range:=wdPrintFromTo, From:=CStr(2), To:=CStr(3) End Sub
思いがけずにハマってしまいそうだったので、今回記事として残しておくことにしました。
今回の件とは関係ないですが、Wordの印刷については下記のような情報もありました。
・Word 2013、Word 2010、Word 2007、および Word 2003 で複数のセクションから構成されている文書のページの範囲を印刷する方法
http://support.microsoft.com/kb/826218/ja
普段セクションを指定して印刷する機会など無いので知りませんでしたが、「p1s1-p2s2」のような感じでセクション指定もできるのですね。
一つ勉強になりました。
この記事へのコメントはありません。