Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9483 / 13644 ツリー ←次へ | 前へ→

【26941】プリントアウト中に印刷の枚数がわかる方法について YN62 05/7/24(日) 22:07 質問[未読]
【26943】Re:プリントアウト中に印刷の枚数がわかる... Kein 05/7/25(月) 0:12 回答[未読]
【27043】Re:プリントアウト中に印刷の枚数がわかる... YN62 05/7/27(水) 7:06 お礼[未読]
【27067】Re:プリントアウト中に印刷の枚数がわかる... Kein 05/7/27(水) 18:26 回答[未読]
【27070】Re:プリントアウト中に印刷の枚数がわかる... YN62 05/7/27(水) 20:44 お礼[未読]

【26941】プリントアウト中に印刷の枚数がわかる方...
質問  YN62  - 05/7/24(日) 22:07 -

引用なし
パスワード
   マクロで印刷をすると・・・
プリンターへ印刷のデータを転送されると、プリンターでの表示が「 1/1 」と表示されて印刷が始まります。何枚印刷があっても、「1/1」とうい表現になっています。
例えば30枚有れば、「1/30・・・29/30」のような表示は出来ないのでしょうか。
現在使っているコードは印刷の範囲指定がプリントごとに変わるのですが、このような場合も印刷の総合計を出して、分子は減算または加算して、印刷の進捗状況が見られると良いのですが、何か良い方法があるのでしょうか。

ActiveSheet.PageSetup.PrintArea = Range(Cells(i, 1), Cells(1, k)).Address
  
ActiveWindow.SelectedSheets.PrintOut Copies:=1 
  
ActiveSheet.PageSetup.PrintArea = ""

【26943】Re:プリントアウト中に印刷の枚数がわか...
回答  Kein  - 05/7/25(月) 0:12 -

引用なし
パスワード
   こんな感じでどうかな ?

Sub MyPrint()
  Dim WS As Worksheet
  Dim AllP As Integer, i As Integer

  With Application
   .DisplayStatusBar = True
   .ScreenUpdating = False
   For Each WS In ActiveWindow.SelectedSheets
     WS.Activate
     AllP = .ExecuteExcel4Macro("Get.Document(50)")
     For i = 1 To AllP
      .StatusBar = i & " / " & AllP & " を印刷します"
      WS.PrintOut From:=i, To:=i, Copies:=1
     Next i
   Next
   .StatusBar = False
   .DisplayStatusBar = False
   .ScreenUpdating = True
  End With
End Sub

【27043】Re:プリントアウト中に印刷の枚数がわか...
お礼  YN62  - 05/7/27(水) 7:06 -

引用なし
パスワード
   ▼Kein さん:

ありがとうございます。
.ExecuteExcel4Macro("Get.Document(50)")はどのような意味なのでしょうか。

一応ステータスバーに出ました。
MsgBoxに出すとすれば?っと思っていたのですが、方法はありますか。
よろしくお願いします。

【27067】Re:プリントアウト中に印刷の枚数がわか...
回答  Kein  - 05/7/27(水) 18:26 -

引用なし
パスワード
   >はどのような意味
GET.DOCUMENT というのは Excel4マクロ関数といって、VBAが実装される前の
Excel4.0でVBAのような処理をしていた関数の一つです。その後 5.0にバージョン
アップされるとき、初めてVBAが実装されて殆ど使う機会がなくなりましたが、
ものによってはVBAより簡単な記述で、たいへん便利かつ処理が高速なので
今でも使っているわけです。今回の GET.DOCUMENT関数は、引数の値を 50 とすると
アクティブシートの総ページ数を一気に取得することが出来るので、よく使います。

>MsgBoxに出すとすれば
以下のように変更するだけです。

Sub MyPrint()
  Dim WS As Worksheet
  Dim AllP As Integer, i As Integer

  With Application
   .ScreenUpdating = False
   For Each WS In ActiveWindow.SelectedSheets
     WS.Activate
     AllP = .ExecuteExcel4Macro("Get.Document(50)")
     For i = 1 To AllP
      MsgBox i & " / " & AllP & " を印刷します", 64
      WS.PrintOut From:=i, To:=i, Copies:=1
     Next i
   Next
   .ScreenUpdating = True
  End With
End Sub

【27070】Re:プリントアウト中に印刷の枚数がわか...
お礼  YN62  - 05/7/27(水) 20:44 -

引用なし
パスワード
   ▼Kein さん:

今晩は。
大変貴重な解説を頂き感謝しています。
今後ともよろしくお願いします。

順調にマクロが動き出しました。
ありがとうございました。

9483 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free