Office関連

[Wordマクロ]PrintOutメソッド実行時に「型が一致しません」との実行時エラーが発生する。

Wordマクロで文書を印刷するときはPrintOutメソッドをよく使います。
ページ範囲を指定して印刷を行う、下記のようなコードは一見問題無いように見えますが、これを実行すると「実行時エラー ’13’:型が一致しません。」とのエラーが発生します。

Option Explicit

Public Sub Sample()
  ActiveDocument.PrintOut Range:=wdPrintFromTo, From:=2, To:=3
End Sub

Word_PrintOut_01_01

どこが引っ掛かっているのかというと、「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」のような感じでセクション指定もできるのですね。
一つ勉強になりました。

関連記事

  1. Excel

    Evernote Cloud SDKを使ったVBAマクロ

    3年ほど前にEvernote for Windowsを操作するVBAマ…

  2. Office関連

    類似した書式の文字列を選択するWordマクロ三種

    Wordには、選択中の文字列と似た書式の文字列を一括選択する「類似した…

  3. Office関連

    PowerPoint 2013でYouTubeの動画を挿入する。

    2014/5/23 追記:いつの間にか「ビデオの挿入ダイアログ」が…

  4. Office関連

    Office 2016のコントロールIDリストが公開されました。

    昨年の秋にリリースされたOffice 2016。そのコントロールI…

  5. Office関連

    古い形式のWordテンプレートを新しい形式に一括変換するVBScript

    古い形式のWordテンプレート(dot)を新しい形式(dotx,dot…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP