【Word VBA】ページの行数を設定するWordマクロ

2017年4月9日

ある書類を対象にしてページの行数を指定しようとしたら、エラーが発生しました。

実行時エラー 4608 値が有効範囲を超えています。

エラーの出た行では、ただ単にページの行数指定をしようとしているだけです。

現在の行数をイミディエイトウィンドウで調べたところ、以下のような表示になっていました。

-32767という数字に見覚えのある方はいるかも。Integer型の数字が扱える数字範囲の下限値です。

なんかおかしいですよね。

処理対象の文書を調べてみたら、セクションが複数設定されていました。

セクションが複数あり1つの値では表示できない場合には「9999999」の値を返して、undefined (定義できない)という意味を表示することがあります。

今回は-32767となっており、通常と表示が違いました。

このエラーには複数の要因あるようです。具体的な要因は特定できなかったのですが、今回の文書ではセクション毎に処理をするようにしたらエラーを回避できました。

テスト用にサンプルファイルを作って確認したのですが、複数セクションの場合でも文書全体の行数設定でエラーがでない場合もありました。

そのようなわけで、私のメモ書きということで対処方法を紹介します。

このマクロでできること

ページの行数を25行に設定します。

複数のセクションがあり、それぞれのページの行数が異なる場合にも実行できます。

(マクロ実行前)

(マクロ実行後)

マクロの解説

マクロ1では、文書全体に対してページの行数を設定しています。

マクロ2では、セクション毎にページの行数を設定しています。

マクロ1(エラーが発生する場合があります)


Sub ページの行数を設定するWordマクロ1()

 ActiveDocument.PageSetup.LinesPage = 25
 
End Sub

マクロ2


Sub ページの行数を設定するWordマクロ2()

 Dim mySec As Section
 
 For Each mySec In ActiveDocument.Sections
  mySec.PageSetup.LinesPage = 25
 Next

End Sub

-コード
-,