ある書類を対象にしてページの行数を指定しようとしたら、エラーが発生しました。
実行時エラー 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