Excel VBA質問箱 IV

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

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


9143 / 13646 ツリー ←次へ | 前へ→

【29107】印刷枚数とデータの数 toto 05/9/25(日) 1:58 質問[未読]
【29110】Re:印刷枚数とデータの数 ichinose 05/9/25(日) 10:13 発言[未読]
【29111】Re:印刷枚数とデータの数 toto 05/9/25(日) 11:27 発言[未読]
【29117】Re:印刷枚数とデータの数 ichinose 05/9/25(日) 12:50 発言[未読]
【29127】Re:印刷枚数とデータの数 toto 05/9/25(日) 20:05 お礼[未読]

【29107】印刷枚数とデータの数
質問  toto  - 05/9/25(日) 1:58 -

引用なし
パスワード
     A列
1 書籍部門
2 関東地区
3 2005-09
4 コミック
5 雑誌
6 単行本
7 文庫本
.
.
上記データをCopyメソッドを使用してThisworksheetに貼り付けました。
A4以降のデータはコピー元によって行数が異なります。
最小でA4まで、最大でもA10まであります。
これを印刷する時、A1〜A3まではすべての用紙に、4行目はA4以降のデータを
順番に、全4行印刷された用紙がA4〜A10に値のある行数分出力したいです。
Thisworksheetに印刷用の書式を作成する時に、A1からA3までを印刷タイトルに
設定し、A4からA10までは一行ごとに改ページをあらかじめ設定しようと
考えています。
印刷前にMsgboxで「用紙を○枚セットしてください」と表示し、
commandbutton「OK」をクリックすると印刷が開始する、
という風にしたいと思います。
その際の○に返すコードと、実際の印刷を行うコードについて、
アドバイスを頂きたいと思います。
今日一日パーフェクトマスターを読みましたが、とうとうリタイヤしました。
説明がヘタで申し訳ありませんが、どうぞよろしくお願い致します。

【29110】Re:印刷枚数とデータの数
発言  ichinose  - 05/9/25(日) 10:13 -

引用なし
パスワード
   ▼toto さん:
おはようございます。

>  A列
>1 書籍部門
>2 関東地区
>3 2005-09
>4 コミック
>5 雑誌
>6 単行本
>7 文庫本
>.
>.
>上記データをCopyメソッドを使用してThisworksheetに貼り付けました。
>A4以降のデータはコピー元によって行数が異なります。
>最小でA4まで、最大でもA10まであります。
>これを印刷する時、A1〜A3まではすべての用紙に、4行目はA4以降のデータを
>順番に、全4行印刷された用紙がA4〜A10に値のある行数分出力したいです。
>Thisworksheetに印刷用の書式を作成する時に、A1からA3までを印刷タイトルに
>設定し、A4からA10までは一行ごとに改ページをあらかじめ設定しようと
>考えています。
>印刷前にMsgboxで「用紙を○枚セットしてください」と表示し、
>commandbutton「OK」をクリックすると印刷が開始する、
>という風にしたいと思います。
>その際の○に返すコードと、実際の印刷を行うコードについて、
>アドバイスを頂きたいと思います。
八割方、マクロの記録を応用しました。

標準モジュールに

'=================================================
Sub test()
  Dim シート名 As String
  シート名 = "sheet1" '←このシート名を変えてみて下さい
  Call set_page(Worksheets(シート名))
  MsgBox "用紙を" & Application.ExecuteExcel4Macro("GET.DOCUMENT(50,""" & シート名 & """)") & "枚 用意してください"
  Worksheets(シート名).PrintPreview 'プレビューにしておきましたが、
  'Worksheets(シート名).PrintOut  ' 実際は、←ですね?
End Sub
'===================================================
Sub set_page(sht As Worksheet)
  Dim lrow As Long
  With sht
    With .PageSetup
      .PrintTitleRows = "$1:$3"
      .PrintTitleColumns = ""
      End With
    lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
    For idx = lrow To 5 Step -1
     .HPageBreaks.Add .Cells(idx, 1)
     Next idx
    End With
End Sub

プロシジャーtestを実行してください

【29111】Re:印刷枚数とデータの数
発言  toto  - 05/9/25(日) 11:27 -

引用なし
パスワード
   ▼ichinose さま

おはようございます。
回答ありがとうございました。

実際に印刷をするSheetは「Sheet1」のままなので
そのまま使わせて頂きます。
印刷をするSheet上にcommandbuttonを作成し、
クリックをすると、印刷枚数を教えてくれるMsgboxが表示される、
という風にする場合は、標準モジュールではなく、
commandbuttonに
test()
の内容を書き、
Msgboxの「OK」ボタン(こちらもcommandbuttonですね)に
set_page(sht As Worksheet)
内容を書けば良いのですか?


>Sub test()
>  Dim シート名 As String
>  シート名 = "sheet1" '←このシート名を変えてみて下さい
>  Call set_page(Worksheets(シート名))
>  MsgBox "用紙を" & Application.ExecuteExcel4Macro("GET.DOCUMENT(50,""" & シート名 & """)") & "枚 用意してください"
>  Worksheets(シート名).PrintPreview 'プレビューにしておきましたが、
>  'Worksheets(シート名).PrintOut  ' 実際は、←ですね?
>End Sub
>'===================================================
>Sub set_page(sht As Worksheet)
>  Dim lrow As Long
>  With sht
>    With .PageSetup
>      .PrintTitleRows = "$1:$3"
>      .PrintTitleColumns = ""
>      End With
>    lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
>    For idx = lrow To 5 Step -1
>     .HPageBreaks.Add .Cells(idx, 1)
>     Next idx
>    End With
>End Sub
>

【29117】Re:印刷枚数とデータの数
発言  ichinose  - 05/9/25(日) 12:50 -

引用なし
パスワード
   >印刷をするSheet上にcommandbuttonを作成し、
>クリックをすると、印刷枚数を教えてくれるMsgboxが表示される、
>という風にする場合は、標準モジュールではなく、
>commandbuttonに
>test()
>の内容を書き、
>Msgboxの「OK」ボタン(こちらもcommandbuttonですね)に
>set_page(sht As Worksheet)
>内容を書けば良いのですか?

実際にご自分で試してみて
わからなかったり、うまくいかなかったり
したら、その旨と一緒に投稿して下さい。
(以下のようなコードで試したけど、この行でxxxxというエラーでる等)


今度は、シートモジュールに

Private Sub CommandButton1_Click()
>>  Dim シート名 As String
>>  シート名 = "sheet1" '←このシート名を変えてみて下さい
>>  Call set_page(Worksheets(シート名))
>>  MsgBox "用紙を" & Application.ExecuteExcel4Macro("GET.DOCUMENT(50,""" & シート名 & """)") & "枚 用意してください"
>>  Worksheets(シート名).PrintPreview 'プレビューにしておきましたが、
>>  'Worksheets(シート名).PrintOut  ' 実際は、←ですね?
>>End Sub
>>'===================================================
>>Sub set_page(sht As Worksheet)
>>  Dim lrow As Long
>>  With sht
>>    With .PageSetup
>>      .PrintTitleRows = "$1:$3"
>>      .PrintTitleColumns = ""
>>      End With
>>    lrow = .Cells(.Rows.Count, 1).End(xlUp).Row
>>    For idx = lrow To 5 Step -1
>>     .HPageBreaks.Add .Cells(idx, 1)
>>     Next idx
>>    End With
>>End Sub
>>

でいけると思います。

【29127】Re:印刷枚数とデータの数
お礼  toto  - 05/9/25(日) 20:05 -

引用なし
パスワード
   ▼ichinose さん:
わかりました。
どうもありがとうございました。

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