• ベストアンサー

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

Wendy02の回答

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

こんにちは。 >たとえば、最初に受付1054までを印刷、次は受付1136までを印刷と印刷件数は不変であり、最初の時に1054までの印刷日に全て日付が入力、 この部分は、もうすでにあるのですか?私は、何度か、hirosatonnさんには回答していますが、該当するコードが見当たりません。 そこで、一応、それに見合うコードをこちら側で作ってみました。また、受付番号は、ファイル-プロパティ-ユーザー設定の記録番号に入れるようにしました。印刷範囲は、A列からT列までの範囲になっています。 今は、印刷の部分が、プレビューになっておりますが、Preview:=True を False に換えれば印刷しますが、すでに、マクロをお持ちなら、それを入れ替えてください。印刷の範囲は、すでに設定されています。 Sub MyPrint() Dim LastNum As Long Dim NewNum As Long Dim Frow As Long Dim Lrow As Long  On Error GoTo MakeDocuProperty  LastNum = ThisWorkbook.CustomDocumentProperties("記録番号").Value  If LastNum = 0 Then Err.Raise 9    On Error Resume Next  Frow = Application.WorksheetFunction.Match(LastNum, Columns(1), 0)  If Frow = 0 Then MsgBox "受付番号が見つかりません." & vbCrLf & _       "プロパティのユーザー設定を調べてみださい。", vbCritical: Exit Sub    While Lrow = 0  NewNum = Application.InputBox("前回の番号: " & CStr(LastNum) & "(+1)" & vbCrLf & _         "本日の最後の受付番号を入れてください", Type:=1)           If NewNum = 0 Then Exit Sub  Lrow = Application.WorksheetFunction.Match(NewNum, Columns(1), 0)  If Lrow = 0 Then MsgBox "受付番号が見つかりません.", vbInformation  Wend    With ActiveSheet.Cells(Frow, 20).Resize(Lrow - Frow)    .NumberFormatLocal = "yy/mm/dd"    .Value = Date  End With  ThisWorkbook.CustomDocumentProperties("記録番号").Value = NewNum     'A列から、T列までの印刷範囲設定  ActiveSheet.PageSetup.PrintArea = _   ActiveSheet.Cells(Frow, 1).Resize(Lrow - Frow + 1, 20).Address  'ここから印刷マクロを入れてください。  '印刷マクロ例  ActiveSheet.PrintOut , Preview:=True '本当に印刷するときは、Preview はFalse   Exit Sub MakeDocuProperty:   'カスタム(ユーザー)プロパティを作る   If Err.Number = 5 Then   LastNum = Application.InputBox("新規に記録番号を作りますので、今までの最後の番号を入れてください", Type:=1)   If LastNum = 0 Then MsgBox "0はいれないでください": Exit Sub   With ThisWorkbook.CustomDocumentProperties     .Add Name:="記録番号", _      LinkToContent:=False, _      Type:=msoPropertyTypeNumber, _      Value:=LastNum   End With   Err.Clear   Resume Next   ElseIf Err.Number = 9 Then   LastNum = Application.InputBox("プロパティの記録番号の[最後の番号]が無くなっているようですから、" & vbCrLf _   & "新たに入力してください。", Type:=1)   ThisWorkbook.CustomDocumentProperties("記録番号").Value = LastNum   Resume Next   End If   MsgBox Err.Number & " :" & Err.Description End Sub

hirosatonn
質問者

補足

Wendy02さん いつもありがとうございます。 >受付番号は、ファイル-プロパティ-ユーザー設定の記録番号に入れるようにしました。 ど素人ですみません。ユーザー設定の方法がわかりません。 質問時に載せればよかったのですが 私なりに考えたコ-ドでは印刷したい受付番号(最初から数百件分入力済み)以降も印刷し、日付は指定番号のみ入力となります。 '----- 印刷範囲 列指定 --------- Const Sh = "入力シ-ト" '  <----- シ-ト名指定 Const Left_Col = "A" '  <------ 印刷範囲の左端列 Const Right_Col = "S" '  <----- 印刷範囲の右端列 Const Target_Col = "T" ' <----- 印刷データ判定列(日付形式) Const Prev_Mode = 1 '  <----- 0 = 直接印刷 /  1 = プレビュー '------------------------------ Dim TopRw As Long Dim EndRw As Long Dim Target_Date As Date Dim N As Long Dim strCode As String Dim rngSA As Range Dim rngFC As Range Dim shNum As Long '検索する受付番号を取得 '文字列型で受ける strCode = Application.InputBox("受付番号を入れてください。", "番号の入力", Type:=2) 'キャンセルの場合の処理 If UCase$(strCode) = "FALSE" Then Exit Sub '受付番号の検索範囲を取得(A1~A列最終行まで) With Sheets(Sh) Set rngSA = .Range("A1", .Range("A65536").End(xlUp)) End With '受付番号の検索範囲から入力された受付番号を探す Set rngFC = rngSA.Find(What:=strCode, LookAt:=xlWhole) '該当する受付番号が無ければ警告を表示して終了 If rngFC Is Nothing Then MsgBox "受付番号がありません!", vbOKOnly Or vbCritical, "エラー" Exit Sub End If With Worksheets(Sh) EndRw = .Range(Left_Col & "65536").End(xlUp).Row Target_Date = .Range(Target_Col & EndRw).Value TopRw = EndRw Do While .Range(Target_Col & TopRw).Value = _ .Range(Target_Col & TopRw).Offset(-1).Value TopRw = TopRw - 1 If TopRw = 1 Then Exit Do Loop   N = EndRw - TopRw + 1 .PageSetup.PrintArea = Range(Left_Col & TopRw & _ ":" & Right_Col & EndRw).Address If Err.Number > 0 Then MsgBox "プリンタ-の準備が、出来ていません。" Exit Sub End If ’印刷した日付を印刷日へ rngFC.Offset(0, 19).Value = Date If Prev_Mode = 1 Then .PrintOut Preview:=True Else .PrintOut Preview:=False MsgBox Target_Date & " 印刷分を " & N & _ " 件 印刷しました。", , "印刷完了" End If .PageSetup.PrintArea = False End With End Sub

関連するQ&A

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

    OS:XPSP2,Excel2002で印刷マクロを教えてください。 "入力シ-ト"に顧客管理用で下のようなデ-タが入っています。      A列     B列   C列  2行目:受付番号   氏名   住所; ・・・・・・S(列) 3行目 80001   玉田                      80002   山田      80003   上田       ・       ・ 受付番号はすでに85000くらい(不確定)まで入力済みです。 氏名以下をデ-タとして日々入力していき作成し、件数がかなり溜まった(数百件くらい)ときに印刷をするといった仕事です。 マクロを使って、印刷したいデ-タをMsgで”最初の番号を入力”で受付番号を入れて次に同じようにMsgで”印刷最後の番号を入力”で受付番号を入れて、その間のデ-タをA列からS列まで印刷するものです。  

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

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

  • ラベル印刷ソフトで連番を一度に印刷できますか。

    ラベルに連番を一度に印刷したいのですが、現在使用しているエーワンのフリーソフト「ラベル屋さん21」では出来ません。一枚ずつ番号を入力して印刷しています。最初のラベルに1と入力して最後のラベルに30と入力すれば、自動的にすべてのラベルに入力でき一度に印刷できればと思っています。フリー・シェアどちらでも構いません。よろしくお願いします。

  • エクセル 2010 マクロ 残セル表示と印刷

    A列~N列迄データが入力されている発注表があります。 毎日、入荷現品と照合して、合致したら該当品のC列に日付を入力しています。 合致項目はD~H列の製品番号のいずれとK列の数量です。 製品番号は各行に1番号のみ入力されています。 ただ、それがD列だったり、F列だったりします。 A~N全てが空白の行もあります。 行数はシートによって一定ではありません。 毎日C列に日付が埋められていくわけですが、 例えば、空白セルが残り3個になったら 「残り3品目です」。2個だったら「残り2品目です」のように 残り1品目になるまで、C列に日付を入力すると メッセージボックスで知らせてくれるようなことができましでしょうか? また、残りが0品目。 すなわちデータが何も入っていない行を除いたC列全てに日付が入力されたら データが入力されている最終セルまでの下線部に実線を入れ(A~N)、 印刷日をN1セルに入力、 A~Nが全て収まり横向きで印刷をすることも出来ますでしょうか? 行方向は分割されて構いません。 その時、I列以外は列幅13で、I列のみAutofitで文字幅に合わせるようにしたいです。

  • 伝票全件印刷のマクロ

    似たような質問があり、新たに質問するのは心苦しいのですが、何度挑戦してもうまくいかず、こちらで質問させていただきます。 エクセルで、一覧になっているデータを1人1枚で個別印刷と全件印刷する時のマクロについて知りたい。 (1)「計画書DB」というシートに1~100番までの顧客に関する情報が、入力されています。(氏名・住所など情報は多数) (2)「計画書」というシートが、1人1枚の紙を表示させる為のシートになっていて、全ての項目は、AQ1というセルを検索値としたVLOOKUP関数で表示させています。 (つくりたいマクロ) (1)個別印刷 「計画書」のA1~A52迄を1ページとして印刷 (2)全件印刷 「計画書」のA1~A52迄を1ページとして印刷した後、「計画書」のAQ1の数字が+1されて、次の方の計画書を印刷→の繰り返し。※「計画書DB」シートの番号(A列)がなくなったら印刷中止。 できるだけ具体的に教えていただけると大変助かります。。

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

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

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

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

  • エクセル(2007~)のマクロ検索での画面表示についてお教え下さい。

    エクセル(2007~)のマクロ検索での画面表示についてお教え下さい。 エクセル初心者です。現在お仕事で入力作業をしていますが、 マクロで作成されているデータにつきまして、 登録番号 氏名 フリガナ ローマ字氏名 生年月日 受付日 などの個人情報が多量に入力されております。 例えば、 生年月日のみ、まだ入力がされていないため マクロの検索で登録番号から一人一人呼び出して生年月日を追加入力して行くのですが、 検索が終わった後、1件分のみの表示になるのですが もとの表示に戻したいのです(再度、多量の個人情報を表示)。 どこのどのボタンを押せば良いか、教えて頂きたいです。 それともう1点なのですが、 半角カタカナは、ャョ などの小文字が使えない(データベース?などですでに設定されているので、良子:リヨウコとなる)ようなのですが、手入力してみるとリョウコと入力が出来るのですが どのような事が考えられますでしょうか。。? 分かりづらい表現で申し訳ありませんが宜しくお願い致します。

  • Access データ入力について

    Access 初心者です。  初心者ながら必要に迫られデータ入力用システムを作っています。 どのようなものかというと ・作業月日 ・作業名 ・作業行った社員名 ・件数 これらの事項をフォームで入力していきます。今、なんとかフォームの完成まで行き着きました。 ただ、1日に作業員1名が行う作業は1つではないので、今のフォームのままでは、入力のたびに重複する作業月日、作業者名を入力しなければなりません。 以前別の会社だったとき同僚が作ったシステムでは、最初に日付、氏名を1度入力し、あとは作業名や件数のみを入力するというものでした。(説明が上手くできませんが…) 今となっては転職してしまったので、そのシステムの中身をみることができません。 この以前のシステムのように最初に日付、氏名を入力するという方法にはこだわりません。 初心者にでも分かるように教えていただけないでしょうか。

  • 差し込み印刷の〒表示

    今年の年賀状印刷で、初めてワードの差し込み印刷を使うのですが、〒表示をうまく出せず困っています。 ラベルの配置をして、《郵便番号》の前に「〒」を入力するのですが、すべてのラベルの更新を押すとと、〒は消えてしまいます。 《氏名》の後に入力した「様」はちゃんと更新されて、全部のラベルについています。 よろしくお願いします。