- ベストアンサー
ExcelVBA Range クラスの PageBreak プロパティを設定できないエラーの原因と対処法
- VBScriptのファイルからExcelファイル内のFunctionを呼び出して改ページ処理を行わせる際に、RangeクラスのPageBreakプロパティを設定することができないエラーが発生します。
- エラーメッセージが「実行時エラー '1004': Range クラスの PageBreak プロパティを設定できません」と表示されます。
- エラーは実行時に発生し、デバッグウィンドウを表示した後にステップインなどで処理を継続させるとエラーが解消されます。原因は不明であり、解決策も分かりません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 コードの一部だけ見せられても手掛りが少なすぎて、何とも言い難いのですが^^; んーー。。 > 実行時エラー '1004':Range クラスの PageBreak プロパティを... 実行時エラーですよね...変数 row に適切な値が代入されてないのでは? > ActiveSheet.Rows(row).PageBreak = xlPageBreakManual の前に Debug.Print 等を使ってエラー時の内容をチェックしてみては? # row は予約語なので変数名に使うのは止めといた方が良いですよ。 または、この箇所が実行されるとき、ActiveSheet が何なのかは一応確認 して下さい。例えば、グラフシートが ActiveSheet の場合は当然失敗 しますよね。 とりあえず、テスト用の Excel VBA と VBS を用意して、実験してみました が特に問題なく動いているように見えます。再現しませんね...何だろ? ' // Excel 標準モジュール Function +++++++++++++++++++++++++++ ' // ファイル名 C:\test.xls Public Function SampleFunc(ByVal DummyArg As Long) As Long On Error GoTo Err_Handler ' // add pagebreaks Dim i As Long For i = 2 To 10 Worksheets(1).Rows(i).PageBreak = xlPageBreakManual Next SampleFunc = 1 Exit Function Err_Handler: SampleFunc = 0 End Function ' // VBS 側+++++++++++++++++++++++++++++++++++++++++++++++++++ Dim xlApp, xlWb, lRet Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlWb = xlApp.Workbooks.Open("C:\test.xls") ' // 1は関数とあったのでダミー引数を設けただけで特に意味はなし lRet = xlApp.Run("SampleFunc",1) MsgBox "戻り値:=" & Cstr(lRet)
お礼
回答ありがとうございます。 >コードの一部だけ見せられても手掛りが少なすぎて、何とも言い難いのですが^^; 申し訳ないです。 それなりに量のあるソースになってまして、一部だけ切り出そうにもどこまで必要かがわからない状態なのです。 私が作ったのものならば、それもできたのですが……。 ># row は予約語なので変数名に使うのは止めといた方が良いですよ。 ご指摘ありがとうございます。気をつけます。 変数rowの値やActiveSheetが何なのかもチェックしましたが、意図した値が入っていました。グラフシートでもありません。 なにより、質問時にも書きましたが、デバッグウィンドウ上ではエラーとならずに、問題の記述も通ってしまうのが理解できません。 出来上がったExcelファイルは意図したとおりの結果となるので、基本的に間違っていないのではと思い、ならばなぜエラーになるのか……。 書いていただいたコードは正しく動きました。 やはり、そこに至るまでのコードに問題があるのでしょうね。 どうしたものか……。