- 締切済み
エクセル VBA 印刷設定
エクセル VBAを使用して リストの入力を行い、全て入力後印刷を行うのではなく 入力途中で設定した列数(1ページ分60列)のデーターが 入力されたら入力時に印刷を実行したいのですが 前回印刷したページを印刷しない方法がわかりません。 Private Sub CommandButton1_Click() Hantei = 60 With Worksheets("発注残明細入力画面") For Hantei = Hantei To 1380 If .Cells(Hantei + 60, 1) = "" Then If .Cells(Hantei, 1) <> "" Then ActiveWindow.SelectedSheets.PrintOut _ From:=(Hantei / 60), To:=(Hantei / 60), Copies:=1, Collate:=True End If End If Hantei = Hantei + 59 Next Hantei 以下にリストシートに書き込むコードです End Sub その他、ぜんぜん違う方法で設定できますでしょうか?
- 77TAKETAKA
- お礼率65% (155/235)
- オフィス系ソフト
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ご質問の意味は分かったけれども、その考え方というか、印刷のタイミングが、なんとも、微妙なところ(かなり狭いタイミングという意味)にあるように思います。ということで、以下のマクロも、微妙なラインに沿った内容になっています。データは、一回しか印刷しません。データの最終行が、1ページのに満たないと、印刷しません。60行なら、59行では印刷しないのです。また、二重に印刷しません。1度きりです。そして、コメントブロックを外せば、データの抜け落ちもチェックできます。 行数そのものの設定は、印刷設定で行ってください。マクロで、その都度、そのページに設定された行数を取得し、その数に対してチェックをしますので変則的なページ行数でも可能です。手動改行・自動改行ともに有効です。 なお、記録されたページ設定を直すときは、プロパティのユーザー設定の'PageCount' の数値を書き換えてください。 '----------------------------------------------- Sub FullDatePrinting() 'データが満たないと、手前のページは印刷しないマクロ Dim bK As Integer '前の印刷ページ数 Dim iP As Long Dim tP As Integer Dim k As Variant Dim iL As Long Dim iH As Long With ActiveSheet .Select On Error GoTo ErrHandler 'CustomDocument プロパティの記録のチェック bK = ThisWorkbook.CustomDocumentProperties("PageCount").Value iP = .Range("A65536").End(xlUp).Row '最終行 tP = ExecuteExcel4Macro("GET.DOCUMENT(50)") '合計ページ数 k = ExecuteExcel4Macro("MATCH(" & iP & ",GET.DOCUMENT(64),1)") '現在のページ(-1) If IsError(k) Then k = 1 If k = 1 Then '1ページ目 iL = 1 iH = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64),1," & k & ")") - 1 Else 'ページの最初の行 iL = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64),1," & k - 1 & ")") 'ページの終わりの行 iH = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64),1," & k & ")") - 1 End If ' データの抜け落ちを調べる ' If WorksheetFunction.Count(.Cells(iL, 1).Resize(iH - iL - 1)) < CInt(iH - iL - 1) Then ' MsgBox k & "ページのデータが足りません", 48 ' End If ' If iP >= iH And k > bK Then .PrintOut From:=k, To:=k, Preview:=True ThisWorkbook.CustomDocumentProperties("PageCount").Value = k '印刷ページの記録 End If End With ErrHandler: If Err.Number = 5 Then 'カスタムドキュメントプロパティの設定 With ThisWorkbook.CustomDocumentProperties .Add Name:="PageCount", _ LinkToContent:=False, _ Type:=msoPropertyTypeNumber, _ Value:=k End With Resume Next End If End Sub
- misatoanna
- ベストアンサー率58% (528/896)
ご質問の内容が、いまいち理解しきれませんが、―― 前回印刷したページを印刷しないということが、最新の60行だけを 印刷するということでしたら、次のような内容でしょうか。 EndLine = Range("A65536").End(xlUp).Row '最終入力行 If EndLine Mod 60 <> 0 Then Exit Sub SttLine = EndLine - 60 + 1 '印刷先頭行 If SttLine < 1 Then Exit Sub Range(Cells(SttLine, 1), Cells(EndLine, 13)).Select Selection.PrintOut あるいは、印刷命令時点で最終行の未使用列に半角スペースを書き込 んでおき、それで次回に印刷済み行を判定するとか。
関連するQ&A
- Excel VBA 印刷設定
印刷ページ設定で ActiveWindow.SelectedSheets.PrintOut From:=1, To:=3, Copies:=2, Collate :=True の式で、何ページまで印刷するかを、A1セルに入力して決定したいのですが、数式の書き方がわかりません。 A1に2と入力すれば、To:=2と認識するやり方を教えてください。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel VBAで自動印刷プログラムの作り方を教えて下さい。
あるファイルにある全てのグラフを印刷するマクロを作りたいのですが、 どのようにすれば良いのでしょうか? Sub Macro2() ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub に何を付け足せば良いのでしょうか? 何卒よろしくお願い致します。
- ベストアンサー
- Visual Basic
- エクセルVBA実行後にファイルを自動で閉じるVBA
Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルを呼び出し各シートを自動印刷して保存して閉じるVBAです。 質問ですがボタンの配置されたあるエクセルファイルの上記VBAの処理を全て完了した後に上書き保存を自動で実行し、自動であるエクセルファイルを閉じるVBAはどの様に追加すれば良いでしょうか?
- ベストアンサー
- Excel(エクセル)
- Microsoft Visual Basicについて質問します。
シート名「委託内訳」でAN70がスペースの時に1ページのみ印刷し,スペースでない時に1~2ページを印刷したい時,下記のマクロでは2ページ目が印刷出来ません。 印刷できる方法は何かありますか? よろしくお願いします。 Sheets("委託内訳").Select Range("AN70").Select ActiveCell = ATAI If ATAI = "" Then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True Else ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _ :=True End If
- 締切済み
- Windows系OS
- VBAでA3サイズに印刷したい
Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2007/5/23 ユーザー名 : Administrator ' ' Sheets("印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub マクロの自動作成でこのように作りました これをA4からA3に拡大印刷したいのですが、どのようにしたら良いのでしょうか教えてください、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 指定する曜日の時に特定のエクセルファイルを印刷
Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルの各シートを自動印刷して保存するVBAです。 ボタンが設置されているシートのK1には「TODAY()」の式が入っています。これは当日の日付を自動で表記する様になっています。 質問ですがボタンを押すと毎日印刷シート+K1に記入されている日付の曜日のシートのみを印刷するVBAはどの様にすれば良いでしょうか? 例えば今日(2016年9月10日)で言うと土曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+土曜日印刷のみ出力されると言う事です。 明日(2016年9月11日)は日曜日なのでボタンを押すと工程分析.xlsファイルの毎日印刷シート+日曜日印刷シートのみが出力される形です。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- ▼マクロ印刷設定について▲
下記のプログラムはコマンドボタンを押すと フォームが表示され、氏名を選択すると 印刷しますかと表示されOKを押すと 印刷がかかるようになっているのですが… このプログラムを印刷設定ができるようにしたり、 印刷枚数を指定できるようなプログラムに変えるには どうしたら良いでしょうか…;; アドバイスなど宜しくお願い致します…。 '↓ここから――――――― Private Sub CommandButton1_Click() Cells(2, 17) = 名簿.Value yesno = MsgBox("印刷しますか?", vbYesNo + vbQuestion + vbDefaultButton1 + vbSystemModal, "印刷しますか?") If yesno = vbYes Then ActiveWindow.SelectedSheets.PrintOut copies:=1 End If Unload Userform1 End Sub Private Sub UserForm_lnitialize() For i = 1 To 15 'lが0から7まで(2行-2から9行-2まで) 名簿.Addltem Worksheets("データ").Cells(i + 1, 1).Value '名簿という別のシート Next End Sub Private Sub 名簿_Change() End Sub '↑ここまでです――――――
- ベストアンサー
- その他(プログラミング・開発)
- エクセルで
お世話になります Sub 請求書印刷() p = 0 For r = 2 To 134 Step 22 For c = 1 To 236 Step 5 If Cells(r, c) = "" Then GoTo pr p = p + 1 Next c Next r pr: Sheets("請求書").PrintOut From:=1, To:=236, Copies:=1, Collate:=True, Preview:=False End Sub 上記のマクロで、Aの2-3(セルの結合)が空白だったらに 変えるのにはどしたらいいでしょうか よろしくお願いいたします
- ベストアンサー
- Visual Basic
- VBAに範囲を指定して印刷
特定のセルに数字を入力することでVLOOKUPで印刷ページを 検索して指定できるシートを作成しています。 下記のようなVBAを作成しました。 印刷開始ページと印刷終了ページを指定する場合、 セルの指定はどのようにすれば、よいのでしょうか? 開始ページと終了ページが同じセルの為、 開始ページ=Rnage("セル") 終了ページ=Rnage("セル") としてしまいますと、エラーが出てしまいます。 Sub 印刷() Dim S As Long Dim B As Long S = Application.InputBox("印刷開始ページを入力", Type:=1) If 開始ページ = 0 Then Exit Sub B = Application.InputBox("印刷終了ページを入力", Type:=1) If 終了ページ = 0 Then Exit Sub ActiveSheet.PageSetup.Order = xlOverThenDown ActiveWindow.SelectedSheets.PrintOut _ From:=S, To:=B, Collate:=True End Sub 宜しくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- excel vba 印刷部数設定
excel 2002を使用しています。 マクロで印刷および印刷プレビューせずに、印刷部数を設定する方法を探しています。 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True ではプレビューしてしまいます。 ActiveWindow.SelectedSheets.PrintOut Copies:=1 では印刷してしまいます。 印刷およびプレビューしない方法はないものなのでしょうか。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
補足
説明がへたですみません。 コマンドボタン1(データー入力ボタン)でフォーム内にある データー(10件)を発注残明細入力画面シートに書込し 60件以上(10件入力)データー書込した時点で 判断し1ページ目を印刷 120件以上書込した時点で判断し2ページ目を印刷。 これを繰り返したいのですが。 イメージはひたすらデーターを入力しコマンドボタン1で 発注残明細入力画面シートに書込。 1ページ印刷分のデーターが書き込まれた時点で1ページ印刷 2ページ印刷分のデーターが書き込まれた時点で2ページ目印刷。 この作業をコマンドボタン1(入力ボタン)で行いたいのですが・・・