• ベストアンサー

助けてください。印刷マクロを

Wendy02の回答

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。Wendy02です。 こちらも読みました。すぐに書き込めなくて、新たな質問を出させてしまい、どうもすみませんでした。日付の範囲をマクロで入れることさえ分かれば、すぐに出来たのでした。 No.2853780 の変形版です。 Sub TestSample3()   '----- 印刷範囲 列指定 ---------   Const SHNAME As String = "入力シ-ト" '  <----- シ-ト名指定   Const L_COL As Integer = 1 '"A" '  <------ 印刷範囲の左端列   Const R_COL As Integer = 19 '"S" '  <----- 印刷範囲の右端列   Const DATE_COL As Integer = 20 ' "T" ' <----- 印刷データ判定列(日付形式)   Const PREV_MODE As Integer = 1 '  <----- 0 = 直接印刷 /  1 = プレビュー   Const DT_FORMAT As String = "M月D日" '<-----印刷日の書式      Dim SearchWd1 As Variant   Dim SearchWd2 As Variant   Dim c1 As Range   Dim c2 As Range   Dim rw As Long   Dim LastCell As Range   Dim myPrintArea As Range   Dim myDate As Variant   Dim addmsg As String      myDate = Date '本日の日付   addmsg = Format$(myDate, DT_FORMAT) & "を" & vbCrLf   If MsgBox("印刷日は、" & Format$(myDate, DT_FORMAT) & "にしますがよろしいですか?", vbYesNo) = vbNo Then     Do       Application.SendKeys "{F2}"       Application.SendKeys "{HOME}"       myDate = Application.InputBox(addmsg & "変更してください。", "日付入力", _       Format$(myDate, DT_FORMAT), Type:=2)       If VarType(myDate) = vbBoolean Or myDate = "" Then Exit Sub       If IsDate(myDate) = False Then addmsg = "日付式が違います。" & vbCrLf     Loop While IsDate(myDate) = False          End If              With Worksheets(SHNAME)         If WorksheetFunction.CountA(.Range("A1").CurrentRegion) < 2 Then           MsgBox "データがありません。マクロを終了します", vbInformation: Exit Sub         End If                  SearchWd1 = Application.InputBox("最初の【受付番号】を入力してください。", "番号入力", Type:=2)         If VarType(SearchWd1) = vbBoolean Or SearchWd1 = "" Then MsgBox "終了します。": Exit Sub                  Set c1 = .Columns(L_COL).Find( _         What:=SearchWd1, _         LookIn:=xlValues, _         LookAt:=xlWhole, _         SearchOrder:=xlByColumns, _         MatchByte:=False)                  If c1 Is Nothing Then           MsgBox SearchWd1 & " は、受付番号列からは見当たりません。" & vbCrLf & _           "終了します。", vbInformation           Exit Sub         End If         SearchWd2 = Application.InputBox("最後の【受付番号】を入力してください。", "番号入力", Type:=2)         If VarType(SearchWd2) = vbBoolean Or SearchWd2 = "" Then MsgBox "終了します。": Exit Sub                  Set c2 = .Columns(L_COL).Find( _         What:=SearchWd2, _         LookIn:=xlValues, _         LookAt:=xlWhole, _         SearchOrder:=xlByColumns, _         MatchByte:=False)         If c2 Is Nothing Then           MsgBox SearchWd2 & " は、受付番号列からは見当たりません。" & vbCrLf & _           "終了します。", vbInformation           Exit Sub         End If                           Set myPrintArea = .Range(c1, c2.Offset(, R_COL - 1))           If MsgBox("'" & myPrintArea.Address & "' の受付簿の印刷を開始します。" & _             "印刷日( " & Format(myDate, DT_FORMAT) & " )は、印刷と同時に、" & Chr(DATE_COL + 64) _             & " 列に設定されます。", vbOKCancel) = vbCancel Then             Exit Sub          End If                           '日付を入力         myPrintArea.Columns(DATE_COL).Resize(, 1).NumberFormatLocal = DT_FORMAT         myPrintArea.Columns(DATE_COL).Resize(, 1).Value = myDate                  '"通知書”欄から"証券”欄までは印刷しない         .Range("K1:N1").EntireColumn.Hidden = True         .PageSetup.PrintArea = myPrintArea.Address         If PREV_MODE = 1 Then           .PrintOut Preview:=True         Else           UserForm2.Show vbModeless           DoEvents           .PrintOut Preview:=False                      Unload UserForm2           MsgBox myDate & " 印刷分を " & myPrintArea.Rows.Count & "件印刷しました。", , "印刷完了"         End If         .PageSetup.PrintArea = ""                  '印刷終了後"通知書”欄から"証券”欄まで再度表示         .Range("K1:N1").EntireColumn.Hidden = False              End With       Set c1 = Nothing: Set c2 = Nothing       Set myPrintArea = Nothing End Sub

hirosatonn
質問者

お礼

Wendy02さん いつもありがとうございます。そしてお礼が遅くなりすみません。自分のパソコンでは考えていたように出来ましたが、職場へのコピーがまだできていませんので、なんとも言えませんが多分大丈夫だろうと思います。おかしかったときはまたお願いいたします。

関連するQ&A

  • すみません。印刷マクロをもう一度

    以前印刷マクロを教えていただいたのですが、もう一度お助けください シートに下のようなデータベースがあります。  受付番号 氏名 〒 住所・・・・・印刷日(T列)  1001  1002  1003  1004    ・    ・    ・   印刷時に受付番号を入力することで印刷できるものです。 1回印刷したデ-タは次回は印刷範囲外で判断基準を印刷日とし印刷を実行した日に自動的に日付が印刷日に入力されるものをです。 たとえば、最初に受付1054までを印刷、次は受付1136までを印刷と印刷件数は不変であり、最初の時に1054までの印刷日に全て日付が入力、次は1136までの全ての印刷日に日付が入るようにです。 ご教授くださいませ。 

  • 印刷マクロを教えてください。

    マクロは初心者です。よろしくお願いいたします。 エクセルで、列AからHまでにデータを入力しています。 また、Aの1から、Aの3までは行タイトルとしています。 列A4から下の行にNo1~の順番号をいれていますが、 例えばNo20からN045までのデータ分だけを印刷したい時など、指定したNoの範囲のデータだけを印刷出来るようなマクロがあれば教えてください。 印刷Noの指定は、行番号でもかまいません。 これまでの質問で印刷関係をみてみましたが、多すぎてわかりませんでした。どなたかよろしくお願いいたします。

  • 教えて!エクセルでの印刷マクロ

    シート1に下のようなデータベースがあります。  受付番号 氏名 〒 住所    1    2    3 データを1から順に入力して、入力内容が日によって違いがあるのですが、入力した分だけ印刷できるマクロがわかりません。 前日、1から15まで入力して印刷、今日は16から50まで入力して、その分(16~50まで)を印刷(前日印刷した分は印刷しない)、次の日は50件入力(印刷は51~100まで)となるようなマクロです。 どなたか、ご教授くださいませ。 

  • excelでマクロを使用した連続印刷について

    A2セルから通し番号、氏名、住所等のデータが入力されている「データ」シートがあり、 VLOOKUPを使用してB3セルに「データ」シートのA列にある「通し番号」を 入力すると氏名・住所等が反映される「印刷」シートがあります。 例えば「データ」シートのC列(住所)に「東京都」という文字列が 含まれている宛名のみを連続で印刷したい場合、 どのようなマクロになりますでしょうか? (マクロ内に「東京都」と指定する方法と、 シート内の特定セルに入力した文字列で指定する方法が ありますでしょうか?) wordでの差し込み印刷や、宛名ソフト等の使用は考えておりません。 よろしくお願いいたします。

  • エクセルで差込印刷:マクロとVLOOKUP

    みなさん、こんにちは。 今回、マクロを作成する際にどうしてもうまくいかない部分がありまして とても困ってしまい、初めて会員登録し質問させていただいております。 皆様に御教授いただき真摯に勉強させていただきます。 どうぞよろしくお願いいたします。 (マクロ初心者で簡単なガイドブックやネットを参考に作成しています。) 今回エクセルのみを使った差込印刷のマクロを作成したいのですが、 まず、Sheet1に「5列×20行の表」があり、下記内容が入っています。 A列:行番号1~20 B列:会員番号 C列:所属名 D列:日付 E列:氏名 Sheet2に「手紙のフォーム」があり、 Sheet1の表の各項目を、VLOOKUPを使用し、 Sheet2の各位置へ差込むように設定をしました。 (VLOOKUPの検索値は、Sheet2の"R1"となるよう設定しています。) データを差し込んだSheet2の1ページを印刷したいです。 今回どうしてもうまくできないのが、手紙は毎回違う人へ違う人数分作成するので、 印刷時点で表に入力されている人の数だけを印刷したいため、 E列(氏名)が空白になったら停止する設定をしてみたのですが 下の自分で作ったマクロを実行すると、全ページが印刷されてしまいます。 Sub 差込印刷() 行 = 2 Dim 番号 As Integer For 番号 = 1 to 20 If Sheets("sheet1").Cells(行,5).Value = "" Then Exit for Sheets("sheet2").Range("R1").Value = 番号 Sheets("sheet2").PrintOut from:=1,To:=1 Next 番号 行 = 行 + 1 End Sub とても単純なミスをしているのだと思うのですが なにぶん初心者なためそれに気がつくことができません。 (For~Next等も見よう見まねで初めて使いました・・・) 月曜日までに分かるととても助かるのですが、 皆様どうぞよろしくお願いいたします。

  • マクロ vba 印刷 

    エクセルの印刷に関するマクロで教えて下さい。今ページ設定のシート設定で1~8行までを固定しています。B列の9~44行までが必要に応じて数字が入力されます。そして2ページ目の50~85行までが同じく必要に応じて数字が入力されます。3ページ目の91行~126行までが又同じく必要に応じて数字が入力されます。このように10ページまであります。つまり固定した1~8行までを見出しに下に表がずらーっとあります。ここで印刷をする際に、数字の入ったページまでを印刷するマクロを作りたいのです。普通に印刷すると10ページ印刷されてしまいます。例えば12行目まで入力があるならば、1ページだけを印刷。98行目まで入力があるならば、3ページ目までを印刷といった具合です。ちなみに途中数字が空白になる事はありません。詳しい方いらっしゃいましたら、お手数ですが教えて頂けませんでしょうか。宜しくお願いします。

  • 開始行と最終行を指定して差し込み印刷するマクロ

    エクセルのマクロで、最終行と最終行を指定して差し込み印刷するマクロをお教えください。 印刷したい個人番号のスタートと終了を指定して、数字を1ずつ増やしながら印刷する場合は、下記のマクロでうまくいきます。 「個人票」のシートを差し込み印刷します。「個人票」シートの個人番号をA8セルに入力すると別に作成した「成績表」シートからVLOOKUP関数を使って氏名や各科目の得点、合計得点を表示するようにしてあります。「個人票」シートのA3セルには「自」、B3セルには「至」、A8セルには「個人番号」と名前を付けてあります。 Sub 個人票印刷() Range("個人番号") = Range("自") Do While Range("個人番号") <= Range("至") Sheets("個人票").PrintOut Range("個人番号") = Range("個人番号") + 1 Loop End Sub 今回、行いたいのは「成績表」シートのA列にある個人番号が不連続であったり、欠番があったりします。そこで、「成績表」シートのA列の例えば、A4からA10までというように、開始行と最終行を指定して、差し込み印刷するようにしたいのです。 できれば上の構文を生かしたいのですが、ご教授のほどよろしくお願い申し上げます。

  • エクセルのマクロ

    教えてください。   A     B   C 1 部品番号  ○   済印 2 111111   ○   済 3 222222   ○   済 4 333333   ○ という表があるとします。 B列にマクロのボタンを作っておき、 A列に部品番号を入力したら、マクロのボタンを押して、 C列に済、という字を表示したいのです。 1部品入力するごとに、その表示をさせたいです。 2行目、3行目・・・と一つずつマクロを登録して いく方法は、(マクロについては詳しくないので、マクロの記録、マクロの停止、という方法しかわかりません)入力するデータが100件以上あるため、それもどうかな・・と悩んでいます。超初心者なのですが、何とか完成したいと思っています。 よろしくお願い致します。

  • マクロの連続印刷

    エクセルのシート1に情報が登録してあり、A列の番号をシート2のセルA1に入力すると情報が入る仕様のブイルックを組んでいます。 これを連続してA1,A2,A3と連続印刷したいのですがどのようなマクロを組めばよいのでしょうか?

  • excelの印刷用マクロ。

    excelで分からない事があり困っています。 横がA~I列、縦がB列のB-1から文字が入力されている最後の行までの範囲を選択して、印刷するマクロを作りたいのですが、どうすればよろしいでしょうか。印刷したいシートには、オートフィルタが掛かっている場合もあります。その場合は、その状態のまま印刷出来る様にしたいです。 どなたか分かる方が居ましたら回答お待ちしています。 よろしくお願いします。