[[20150922112740]] 『ファイルを開かないで印刷』(印刷) ページの最後に飛ぶ

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

 

『ファイルを開かないで印刷』(印刷)

 初めまして。
 エクセルファイルを開かないで中のシート全てを印刷する方法は有るのでしょうか
 よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 なぜ開かないのでしょう?
 開かないで他のブックのセルの値を参照する方法はありますが、
 シートとなるとシートのレイアウトも反映させたいでしょうから、
 素直にブックを開いて、ループで各シートをプリントアウト、とした
 方が簡単だとおもいます。
(カリーニン) 2015/09/22(火) 11:45

 ↓の過去ログは、特定のブックではなく、特定のフォルダ直下の全ての
 ブックの全てのシートをプリントアウトするものですが、参考になると思います。

[[20060908131836]] 『複数ファイルの一括印刷』(TMG)
(カリーニン) 2015/09/22(火) 11:51


 ↑は2006年の過去ログですので、拡張子が「xls」となっています。
(カリーニン) 2015/09/22(火) 11:53

 印刷も含めて【ブックを開かずに・・・したい】というリクエストは、過去から、途切れることなく
 でてきますね。これからも出続けるでしょうね。

 そのたびに、それはできないと考えよう、かりにごりごりやっても効率が悪いだけでコスト対効果が見合わないですと
 そう回答するんですが、一方、そういった関数なりメソッドをMSが提供してくれたら、ずいぶんといいのになぁと
 思わないでもありませんね。これだけ根強いニーズがあるわけですから。

 なので、実は【思い切り開いている】んですが、以下のようなコードを準備しておいて、アプリ側は

 Call InVisiblePrint(ブックフルパス) とか
 Call InVisiblePrint(ブックフルパス,"シート名","シート名",・・・)

 として印刷実行してもいいかもしれませんね。(前者はシートすべて、後者は特定シートのみの印刷)

 Sub InVisiblePrint(fullPath As String, ParamArray shn())
    Dim xlapp As Application
    Dim wb As Workbook
    Set xlapp = New Application
    Set wb = xlapp.Workbooks.Open(fullPath)
    If UBound(shn) < 0 Then
        wb.Worksheets.PrintOut
    Else
        wb.Worksheets(shn).PrintOut
    End If
    wb.Close False
    xlapp.Quit
    Set xlapp = Nothing
    Set wb = Nothing
 End Sub

(β) 2015/09/22(火) 17:39


 ↑ 考えてみれば、別エクセルを立ち上げずとも、Application.ScreenUpdating の手当てだけで
 よかったですねぇ。

 Sub InVisiblePrint(fullPath As String, ParamArray shn())
    Application.ScreenUpdating = False
    With Workbooks.Open(fullPath)
        If UBound(shn) < 0 Then
            .Worksheets.PrintOut
        Else
            .Worksheets(shn).PrintOut
        End If
        .Close False
    End With
 End Sub

(β) 2015/09/22(火) 17:43


コメント返信:

[ 一覧(最新更新順) ]


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