[[20150301073730]] 『VBAで印刷設定した後に印刷プレビューするとエラ=x(やっぱり初歩) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで印刷設定した後に印刷プレビューするとエラー発生。何故?』(やっぱり初歩)

 いつもお世話になっています。
 マクロの記録で作成されたものを自分なりに簡略しました。最初は一連で記述。
 エラー続出で2日間掛かって解決できず、分離して記述しました。
    1)印刷範囲等の設定 2)印刷プレビュー 3)印刷範囲解除

 然し変わらず。最初に走らせ時は問題ないのですが、2回目以降にエラー発生か若しく
 はシートがぐちゃくちゃになります。エラー時は次の様なメッセージが出ます。
   実行時エラー:2147417848
     PrintPreview は失敗しました。WorkSheetオブジェクト

 次の様な内容です。
 Sub プレビュー()
    ActiveSheet.PrintPreview
 End Sub

 Sub 印刷設定解除()
 Dim App As Application

    Sheet2.Select
    Set App = Application

    App.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    App.PrintCommunication = False
    ActiveSheet.PageSetup.PrintTitleRows = False
 '   With ActiveSheet.PageSetup
 '      .PrintTitleRows = False
 '      .LeftMargin = App.InchesToPoints(0.7)
 '      .RightMargin = App.InchesToPoints(0.7)
 '      .TopMargin = App.InchesToPoints(0.75)
 '      .BottomMargin = App.InchesToPoints(0.75)
 '   End With
    App.PrintCommunication = True
 '   ActiveSheet.ResetAllPageBreaks
 End Sub

 Sub 印刷設定()
 Dim App As Application

    Sheet2.Select
    Set App = Application
    ActiveWindow.FreezePanes = False

    App.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = "$C:$G"                '印刷範囲

    App.PrintCommunication = False
    With ActiveSheet.PageSetup
       .PrintTitleRows = "$1:$4"                             '見出行
       .LeftMargin = App.CentimetersToPoints(1.3)
       .RightMargin = App.CentimetersToPoints(1)
       .TopMargin = App.CentimetersToPoints(1.4)
       .BottomMargin = App.CentimetersToPoints(1.4)
    End With
 End Sub

何とかしたいのですが・・・宜しくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows8 >


 はずしているかもしれませんが、コードの中の
 ActiveSheet.なんたら これをすべて Worksheets("シート名").なんたら に変えてみてください。

(β) 2015/03/01(日) 08:03


βさん 早速のレスを頂き有難うございました。
 所用で投稿後出かけていました。済みませんでした。

 ご指摘のようにActivesheet.xxxを Worksheets("xxx")へ変更しましたが、結果は同じでした。
 個別での動作結果:
 (1)印刷範囲等の設定と(3)印刷設定解除・・・問題なし(幾度の試行でもOK)
 (2)印刷プレビュー印刷:Activesheet.xxxの変更前と同じエラーが発生。
 当然、1個にまとめたものもエラー、若しくは文字化けした画面となります。

 ※印刷設定後に手動で印刷プレビューした時は問題なく表示されます。又、設定解除も正常動作します。

 エラー原因:PrintPreview の失敗…WorkSheetオブジェクト云々をどうすればいいのか分かりません。
マクロの記録で作成されたもので必要なものまで省略してしまっているのでしょうか?
それとも、PrintPreview メソッドの使い方に問題が有るのでしょうか。
(やっぱり初歩) 2015/03/01(日) 11:01

 う〜ん・・
 こちらでは、アップされたコードを、10回繰り返しても20回繰り返しても、全く異常は発生しません。
 2147417848エラーをググってみると、オブジェクト参照の問題の例が多いので、もしかしたらと思いましたが。

 エクセルバージョンは何でしょう?
 それと、このコードは、どこに書かれていますか?(標準モジュール?シートモジュール?)
 ところで、印刷しようとしているシートは、枠固定が設定されているんですか?

 だめもとで

 Sub プレビュー()
    ActiveSheet.PrintPreview
 End Sub

 Sub 印刷設定解除()
    Sheet2.Select
    ActiveSheet.PageSetup.PrintArea = ""
    ActiveSheet.PageSetup.PrintTitleRows = False
 End Sub

 Sub 印刷設定()
    Sheet2.Select
    ActiveSheet.PageSetup.PrintArea = "$C:$G"                '印刷範囲
    With ActiveSheet.PageSetup
       .PrintTitleRows = "$1:$4"                             '見出行
       .LeftMargin = Application.CentimetersToPoints(1.3)
       .RightMargin = Application.CentimetersToPoints(1)
       .TopMargin = Application.CentimetersToPoints(1.4)
       .BottomMargin = Application.CentimetersToPoints(1.4)
    End With
 End Sub

 これでやったらどうなりますか?

(β) 2015/03/01(日) 11:35


 >エクセルバージョンは何でしょう? ⇒ 2013 ※Windows 8.1
 >このコード                        ⇒ 標準モジュール内
 >印刷しようとしているシート        ⇒ 枠固定なし

 ご指摘のコードで実行しても同じでした。ちなみに、枠固定をこのシートでは実際には使用しています。
 コード実行時には枠固定を外して走らせています。但し、気がかりな事が有ります。
 それは、ActiveWindow.FreezePanes の [On/Off] をしながら操作していた時にOffにする事を忘れてコード
 実行した時に、同じような『文字化け/ソート結果が異常』が発生していました。(以前に)

 原因は『枠固定』と『App;ication.ScreenUpdate』ではないかと疑っていました。充分に注意をして書き直し
をしました。以降この事では問題が出なくなりました。そして、印刷設定関連を作成し始めました。

 私には良く解らないのですが、前回の問題が今でもどこかで関係しているのではと考えています。
 このブックではないのですが、以前にシート内のコマンドボタンの登録でミスを犯し別のブックのマクロを
 登録した時(予備のブック内)訳のわからない事が起きました。つまり、他のブックとリンクさせていたのです。
 今回もそんな事があるのでは心配して自分なりに調べましたが判明しませんでした。
 (リンク状態を確認する方法が解りません。忘れて見つかりません。)
 この様な状況です。どうぞよろしくお願いします。
(やっぱり初歩) 2015/03/01(日) 12:26

 Sheet2.Selectをコメントアウトした場合、
 他のシートでもエラーがでるのでしょうか。
 それともSheet2のみの現象でしょうか。

 Private Sub Workbook_BeforePrint(Cancel As Boolean)
 は使用していますか。

(マナ) 2015/03/01(日) 12:41


 >Sheet2.Selectをコメントアウトした場合、              ⇒ 同じ現象
 >Private Sub Workbook_BeforePrint(Cancel As Boolean) ⇒ 使用していません
 このシートモジュールが影響するのでしょうか。使った事がありません。

 今、新しいシートで試行しました。コマンドボタンとか全く無いデータだけのシートで行ないました。
 結果は全くと言っていい程変わりません。エラーは出ませんがシートの文字化けです。
 もう一度試行します。結果を報告します。

(やっぱり初歩) 2015/03/01(日) 12:52


 βさん、マナさん どうも有り難うございます。

 先ほどの新しいシートでの試行結果はやはり同じでした。文字化け発生です。エラーは出ませんが・・・
 Private Sub Workbook_BeforePrint(Cancel As Boolean)をこれから調べます。では後ほど・・・
(やっぱり初歩) 2015/03/01(日) 13:08

新規ブックで、他のブックは閉じて
下記を実行するとどうなりますか。

 Sub test()
    ActiveSheet.Range("C1").Value = "test"
    ActiveSheet.PageSetup.PrintArea = "$C:$G"
    ActiveSheet.PrintPreview
    ActiveSheet.PageSetup.PrintArea = ""
 End Sub

 >Private Sub Workbook_BeforePrint(Cancel As Boolean)
 使っていないのであれば無視してOKです。

(マナ) 2015/03/01(日) 13:29


済みません! どうやら私のPCは『いかれポンチン』のようです。
 新しいシートで実行しても『文字化け』です。
 今から他のPCでチャレンジします。(By Excel 2010、Windows 8.1)

 訂正:実行したOS環境 Windows 8.1 ⇒ Windows 7 By Excel 2013
(やっぱり初歩) 2015/03/01(日) 13:53

βさん、マナさん

  他のPCでの結果報告。(By Excel 2010、Windows 8.1)
 全く問題なく作動。理解出来ません。
 ちなみに同PCでの『マクロの記録』結果は殆ど変化は有りませんでした。
 (詳しくは見ていません。先ずは報告と思いました)

 考えられるのは、私の『PC』か『Excel 2013』の何れかが異常であるとしか考えられません。
 ⇒ 私の『PC不良』か『Excel 2013のバグ』かは分かりません。

 どうもお騒がせしました。有難うございました。
 
(やっぱり初歩) 2015/03/01(日) 14:25

この不具合について、私のPC環境が悪いのか Excel 2013 のバグかどなたか試してくだされば幸いです。

(やっぱり初歩) 2015/03/01(日) 14:42


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.