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」のような感じでセクション指定もできるのですね。
一つ勉強になりました。

2014年1月の人気記事前のページ

実行中のアプリケーション一覧を出力するVBScript次のページ

関連記事

  1. Office関連

    「あのコマンドどこだっけ? for Office 2013」の紹介

    Word MVPの新田さんのブログでも紹介していただいている自作フリー…

  2. Office関連

    フォルダ(サブフォルダ含む)内の特定の拡張子のファイルに処理を行うVBAマクロ

    「Wordマクロ サブフォルダ ファイル処理」といったキーワードでのア…

  3. Office関連

    Officeファイルから作成者などのプロパティを取得するVBScript

    下記記事でも書いていますが、xlsxやdocxといった、OOXML形式…

  4. Office関連

    各ページの各行の行頭と行末に文字列を挿入するWordマクロ

    Word文書の各ページに10行程度の文章があり、各行の行頭と行末に文字…

  5. Office アドイン

    Office 2016で進化したOffice アドイン

    今日OfficeDevを眺めていて気が付いたのが「OfficeJS S…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP