Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
エクセルだけで日付を差し込み印刷したい
投稿日時: 19/09/10 02:25:07
投稿者: yoshinotaro

「エクセルだけで差し込み印刷」は、WEB検索などでヒットするのですが、既存の表に応用できず、困っています。
やりたいことは、日付ごとに1枚ずつ表を連続印刷したいのです。
日付部分は、特定のセルで、そのセルに日付を書式設定してあります。
現状は、平日、休日を問わず、連続した日付です。
できれば、1枚のシートで済ませたいです。
例えば、B列以降を印刷対象にして、A列に「印刷」ボタンを設置して、ボタンを押すと、「何年何月何日〜何年何月何日」のダイアログが出る、といった具合です。
ダイアログではなく、A列に入力する、という方法でも構いません。
・・・が、ダイアログのほうが、何も知らない素人には扱いやすいと考えています。
・セルを触らないので、操作ミスで(他を含めて)セルの内容が変わってしまう、などのトラブルが起こりにくい。
・次に何をすれば良いか、解りやすい(と考えています)。
よろしくお願いします。

回答
投稿日時: 19/09/10 08:52:45
投稿者: WinArrow
投稿者のウェブサイトに移動

ダイアログ等で指定した日付に該当する
データを抽出し、且つ、日付毎にページを変えて印刷したい
 
ということでしょうか?
 
 
まず、ボタンクリックして、ダイアログ等で日付を指定する
という操作を自動化するとなると、マクロ(VBA)対応になると思います。
 
この板は、一般機能の板なので、VBA版で質問したほうがよいと思いますが、
それ以前に、VBAコードはあなたが作成することになりますが、VBAコードはわかりますか?
勿論、ヒントを貰っての話になりますが・・・
 

回答
投稿日時: 19/09/10 10:17:52
投稿者: WinArrow
投稿者のウェブサイトに移動

追加レス
  
説明では、処理のイメージがよくわかrないので、
 
(1)指定した日付は、どこのセルに格納するのか?
>B列以降を印刷対象にして
と書かれているので、日付をどこに格納するんかがわかりません。
 
(2)指定した日付でデータを抽出するの?
前レスでデータ抽出と勝手に想像していましたが、違いますか?
 

投稿日時: 19/09/10 21:41:06
投稿者: yoshinotaro

コメントいただき、ありがとうございます。
 

引用:
[quote="WinArrow"]ダイアログ等で指定した日付に該当する
データを抽出し、且つ、日付毎にページを変えて印刷したい

・・・まさに、その通りです。
 
引用:
それ以前に、VBAコードはあなたが作成することになりますが、VBAコードはわかりますか?

BASIC(古い!!)を少しだけ、かじったことはあるので、プログラミングを概念的には分かりますが、VBAは、まったく知りませんし、エクセルに組み込んだ経験もありません。
・・・が、指示のもとに記述や操作をすることは可能だと思います。
  
おっしゃる通り、VBAで質問するのが妥当だと思いますが、今回は、このまま続けたいと思います。
ありがとうございます。
[/u]
 

投稿日時: 19/09/10 22:24:07
投稿者: yoshinotaro

WinArrow さんの引用:
追加レス
  
引用:
(1)指定した日付は、どこのセルに格納するのか?

B列以降の、どこかのセルですが、具体的には後述します。。
たとえば、(仰々しく)コードを教えていただけるとして、「この部分にセル番号を入れなさい」というように、していただけると、大変ありがたいです。
 
引用:
(2)指定した日付でデータを抽出するの?

印刷する表は、すでに出来上がっていて、その表の中に、日付のセルがあります。
(G1:J1結合セル)
今まで、同じシートを複数枚作成して、2枚目以降は、1枚目に日付を入れると、1ずつプラスするようにしていました。
・・・が、この方法では、表の内容変更が、大変というか間違いが起きやすいので、表を1つにしたいのです。
これが、そもそもの質問の発端です。
表を一つにすると、日付のセルも一つになるので、抽出した何日〜何日というデータを格納(出力)するセルが、ありません。
たとえば、A列に作っても良いですし、A1セルに開始日付とA2セルに終了日付を入力する方法でも構いません。
そもそも、印刷さえできれば、セルに出力しなくても問題は無いのですが・・・。
よろしく、お願いします。

回答
投稿日時: 19/09/10 23:45:45
投稿者: WinArrow
投稿者のウェブサイトに移動

大変、申し上げにくいのですが、
 
説明は、ほとんど理解できません。
 
仮にコードを提供できたとしても、
VBAを触ったことがないレベルで、組込みは難しいと思います。
※説明が理解できない常陽では、コードを作成できませんが・・・

回答
投稿日時: 19/09/11 08:37:35
投稿者: んなっと

Q&A掲示板ご利用上のお願い
https://www.moug.net/faq/kiyaku.html#link4

引用:
コード制作依頼
「●●●を実行するようなマクロを作りたいのですが」「●●●をする方法を教えてください」といった、コード制作依頼ともとれるような質問はおやめください。

この部分がひっかりそうです。
引用:
たとえば、(仰々しく)コードを教えていただけるとして、「この部分にセル番号を入れなさい」というように、していただけると、大変ありがたいです。

ただ、回答者と誠実に向き合う姿勢が感じられますので、質問内容をもう少し具体的にしてくだされば協力できるかもしれません。
 
 
以下のスレッドの質問者に比べれば、ほとんど問題はないと思います。
 
条件による行の非表示について
https://www.moug.net/faq/viewtopic.php?t=78437
 
「同じ質問者の立場から」どう思うか、どなたかどこかに書き込んでいただけないでしょうか。

回答
投稿日時: 19/09/11 12:28:29
投稿者: WinArrow
投稿者のウェブサイトに移動

文章訂正
>※説明が理解できない常陽では、コードを作成できませんが・・・

※説明が理解できない状況では、コードを作成できませんが・・・
 
私の感覚は、シートを「枚」と表現すると、違和感があります。
理由は、1つシートのデータを複数ページに印刷することができます。
説明の中では、シートの「枚」と印刷ページの「枚」が区別して表現されていますか?
 
また、「差し込み印刷」の機能は、
あるデータ・・・Excelでいえば、セル範囲と表現したほうがよいかも・・・
の一部分を変化させて印刷するような機能と考えています。
セル範囲とは、シート内であることは理解できると思いますが、
今回の場合、日付データを変化させるということと思われますが、
シートを跨ってしまうと、ちょっと違うよね・・と考えます。
 

回答
投稿日時: 19/09/11 16:31:55
投稿者: WinArrow
投稿者のウェブサイトに移動

[quote="yoshinotaro"]コメントいただき、ありがとうございます。
 

引用:
WinArrow さんの引用:
ダイアログ等で指定した日付に該当する
データを抽出し、且つ、日付毎にページを変えて印刷したい

・・・まさに、その通りです。
 

 
この説明のイメージは、「差し込み印刷」とは異なると思います。
 
実際の表(シートのレイアウト)の説明ができますか?
 
 

回答
投稿日時: 19/09/11 17:27:14
投稿者: んなっと

印刷シートのA2に、データシートの選択範囲を順次代入して印刷する例。
 
●"印刷"シート
 
   A   B   C   D   E
1 日付 担当1 担当2 担当3 担当4
2  9/1   あ   い   う   え
 
B2
=VLOOKUP($A2,データ!$A:$E,COLUMN(),FALSE)
右方向・→
 
●"データ"シート 
 
   A   B   C   D   E
1 日付 担当1 担当2 担当3 担当4
2  9/1   あ   い   う   え
3  9/2   か   き   く   け
4  9/3   さ   し   す   せ
5  9/4   た   ち   つ   て
6  9/5   な   に   ぬ   ね
7  9/6   は   ひ   ふ   へ
 
 9/2,9/3,9/5のような「セル範囲」を選択してから
→下のマクロ実行
 
Sub Excelだけで差し込み印刷()
  Dim Ws As Worksheet
  Dim Rn As Range
  Dim Ar As Range, r As Range
  Dim Cnt As Long
  Dim Flg As Boolean
  Set Ws = Worksheets("印刷")
  Set Rn = Ws.Range("A2")
  If Selection.Columns.Count > 1 Then Exit Sub
  Cnt = Selection.Cells.Count
  For Each Ar In Selection.Areas
    For Each r In Ar
      Rn.Value = r.Value
      If Flg = False Then
        Flg = True
        Ws.PrintPreview
        If MsgBox(Cnt & "部印刷しちゃうよ?", vbOKCancel) = vbCancel Then
          Exit Sub
        End If
      End If
      Ws.PrintOut
    Next
  Next
End Sub

回答
投稿日時: 19/09/11 18:43:12
投稿者: WinArrow
投稿者のウェブサイトに移動

仮に
表のイメージが、
んなっと さん、レスの中の”データ"シートだとすると
 
オートフィルタ、又は、フィルタオプションを使うことで
対象データを抽出できます。
 
オートフィルタならば、対象の日付範囲も目視で確認しながら選択できます。
ダイアログ不要・・・入力ミスもなく、選択ミスは目視核にできるので、やり直しができます。
VBAも不要です。
 

回答
投稿日時: 19/09/11 23:18:15
投稿者: んなっと

こっち。
 
Sub Excelだけで差し込み印刷()
  Dim Ws As Worksheet
  Dim Rn As Range, Sel As Range
  Dim r As Range
  Dim Cnt As Long
  Dim Flg As Boolean
  Set Ws = Worksheets("印刷")
  Set Rn = Ws.Range("A2")
  Set Sel = Intersect(ActiveSheet.UsedRange, Selection, Selection.Item(1).EntireColumn)
  Cnt = Sel.Cells.Count
  For Each r In Sel
    Rn.Value = r.Value
    If Flg = False Then
      Flg = True
      Ws.PrintPreview
      If MsgBox(Cnt & "部印刷しちゃうよ?", vbOKCancel) = vbCancel Then
        Exit Sub
      End If
    End If
    Ws.PrintOut
    Application.Wait Now() + TimeValue("00:00:02")
    DoEvents
  Next
End Sub
 
質問の趣旨:「Wordを使わない差し込み印刷」
"印刷"と"A2"を変更すれば、ほぼWordを併用した差し込み印刷と同等の機能だと思います。

トピックに返信