• 締切済み

VBAで自動印刷を行いたい

"A1"セルに数字の"1"が入力されて印刷、続いて"A1"セルに数字の"2"が上書されて印刷、 続いて"A1"セルに数字の"3"が上書されて印刷、・・・・というように指定した数字になるまで印刷を行う(指定する数字は"B1"セルに入力)にはどうしたらよいでしょうか? 下記のVBAを考えましたがうまくいきません。正しい記述を教えて下さい。 Sub 印刷() Dim myCnt As Long myCnt = 1 Do Until myCnt > Range("B1") Range("A1").Value = myCnt Sheets("Book1").PrintOut Copies:=1 myCnt = myCnt + 1 Loop End Sub

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

記述としては特に間違っているというところはないと思います。 試してみたところ、そのままでも実行可能です。(excel 2003) どのように「うまくいかない」のでしょうか?(エラーになるのか違う結果になるのか) まったくの想像で書けば、「Book1というシートがない」とすればエラーになりますが… また、sheet("Book1")がワークシートなら、Worksheets("Book1")としておいたほうが明確。 でも、同じものを複数枚印刷するのなら、Copies に枚数を設定してあげればよいわけで、ループする必要もないのでは? (差込印刷みたいなことを想定しているのでしょうか?)

masa2832
質問者

お礼

原因が分かりました。BooK1 ではなくて、Sheet1 でした。 大変お騒がせしました。申し訳ありません

masa2832
質問者

補足

「インデックスが有効範囲にありません」の実行時エラーがでます。 デバックを押すと、Sheets("Book1").PrintOut Copies:=1が黄色く表示されます。 同じものを複数枚印刷するのではなく、"A1"セルの数字を変えながら印刷するので、ループが必要ではないでしょうか?よろしくお願いします。

関連するQ&A

  • VBAの定義と印刷について

    VBAで下記の様に定義をして印刷していますが、sheet"AAA","BBB"と同じく 新しいsheet"DDD"もの一緒に印刷したい場合の定義はどうなるのでしょう!教えて頂けますでしょうか。 よろしくお願いします。 別sheetの"sheet1"A列 AAA,BBB,CCC          B列 1,2,3  として印刷フラッグがある。 VBAでは Sub sheet1印刷() CNT = 4 CNT1 = 1 CNT2 = 1 TAKE = 0 CK = 30 Do Until CNT2 = CNT Do Until CNT1 = 4 If Sheets("sheet1").Cells(CNT1, 1) = Sheets("sheet1").Cells(CNT2, 3) Then TAKE = Sheets("sheet1").Cells(CNT1, 2) Select Case TAKE Case 1: Sheets("AAA").PrintOut Copies:=1 Case 2: Sheets("BBB").PrintOut Copies:=1 Case 3: Sheets("CCC").PrintOut Copies:=1 End Select CNT1 = 1 Exit Do Else: CNT1 = CNT1 + 1 End If Loop CNT2 = CNT2 + 1 Loop End Sub

  • VBAで印刷したい。

    シートが3枚あります。 ・回答フォーム ・採点 ・判定 この"回答フォーム"のシートにボタンを作成して クリックすると"採点"の印刷範囲を印刷したいのですが うまく行きません。 よろしくお願い致します。 Private Sub 採点を印刷_Click() Sheets("採点").Select Range("$A$1:$O$41").Select Selection.PrintOut copies:=1 Sheets("回答フォーム").Select End Sub

  • 印刷枚数を指定して印刷(印刷しないシートを含む場合)

    マクロ(VBA)の超超初心者です。 エクセルのブックの全シート(13sheet)の印刷を1つのシートで管理するマクロを作りたいと思っています。 下記のマクロでチェックしたシートのみ印刷することは可能になりました。 Sub チェックしたシートの印刷() Dim rng, shChk, PrtSh For Each rng In Range("IDX") If rng.Offset(0, -1) = 1 Then shChk = shChk & rng.Value & "," End If Next shChk = Left(shChk, Len(shChk) - 1) PrtSh = Split(shChk, ",") Sheets(PrtSh).Select ActiveWindow.SelectedSheets.PrintOut End Sub そこにさらに印刷枚数を指定して印刷したいのですが、下記のマクロだと、0枚(印刷しないときの)の設定ができません、、、 0枚でもマクロを実行できるよにするにはどうしたらよいのでしょうか、、、 さらに、このマクロを簡単に書きたいのです。(ほぼ同じことの繰り返しなので、、、、) Sheets("sheet1").PrintOut Copies:=Range("A1").Value Sheets("sheet2").PrintOut Copies:=Range("A2").Value ・     ・ ・ Sheets("Sheet13").PrintOut Copies:=Range("A13").Value End Sub 超超初心者があつかましい質問ですが、ご教授のほうよろしくおねがいいたします。

  • Inputboxに開始番号と終了番号を入力し印刷

    InputboxにInputboxに印刷する番号の開始番号と終了番号を入力して、 自動で印刷できるようにしたいと考えています。 シートにはセルG6に数字を入力すれば、VLOOKUPで印刷内容を 変更できるように設定しています。 以下のようなVBAを作成しました。 しかし、Loopが止まらないです。 どうすればよいでしょうか? また他に間違いは有りますでしょうか? Sub 印刷() Do a = InputBox("開始番号を入力") z = InputBox("終了番号を入力") Range("G6") = a a = a + 1 ActiveWindow.SelectedSheets.PrintOut Copies:=1 Loop Until a = z End Sub

  • エクセルマクロ 2部づつ印刷する

    現在、下記のようなマクロを組んでいました。 2部づつ印刷するには、何がいけないのでしょうか? (変数まではうまくいき、1部印刷するだけなら、できました) Sub 一括印刷() Dim a, b As Integer Sheets("○○").Select a = Range(d4) b = Range(d5) For n = a To b Range("d10") = n AcriveSheet.PrintOut Copies:=2 End Sub

  • エクセル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はどの様に追加すれば良いでしょうか?

  • VBAでA3サイズに印刷したい

    Sub Macro4() ' ' Macro4 Macro ' マクロ記録日 : 2007/5/23 ユーザー名 : Administrator ' ' Sheets("印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub マクロの自動作成でこのように作りました これをA4からA3に拡大印刷したいのですが、どのようにしたら良いのでしょうか教えてください、よろしくお願いします。

  • excel 空白セルに自動で斜線をひきたいです

    EXCEL2007使用しています。 名簿シートと印刷シートがあります。 印刷シートのセルAJ33:AR37の結合セルに=IF(VLOOKUP($J$4,名簿!$A$2:$G$383,7)="","","印") がはいっています。 このセルが空白ならば斜線を引きたいのですが、なかなかうまくできません。 過去の質問等も参考にしましたが、斜線は引けても、今度は消えません・・・。 ちなみに連続印刷をすでに作ってあるのですが、この連続印刷にも対応させることは可能でしょうか? A1:C3の結合セルの名前は”番号”  印刷範囲の入力セルは”自”、”至”としてあります。 Sub 印刷開始() Range("番号") = Range("自") Do While Range("番号") <= Range("至") Sheets("印刷").PrintOut Range("番号") = Range("番号") + 1 Loop End Sub 説明力がなくて申し訳ないのですが、どうぞよろしくお願い致します。

  • 印刷範囲の変更

    印刷範囲の自動変更が可能かどうかお教え下さい。  A B C D E 1      ☆ 2 3 4 A1~C3の印刷範囲指定は ActiveSheet.Range("A1:C3").Select Selection.PrintOut Copies:=1 でよろしいですね? 任意のセル、仮にE1に数字で1を入れた場合にA1:C1範囲で、2を入れた場合にA1:C2の範囲で、3を入れた場合はA1:C3といったように印刷範囲をセルE1の数字で変更できるコマンドボタンの設定はできますでしょうか? 宜しくお教え下さい。

  • 非表示シートに関して(エクセル・マクロ)

    度々ご教授お願い致します。 今までの質問に対して回答は得られたのですが 下記が質問内容 >>1)シート1のA1セルを右クリックするとシート2を印刷。 >>2)シート1のB1セルを右クリックするとシート3を印刷。 >>3)それぞれのシート印刷時に2部印刷が行われるようにする。 下記が回答済みのマクロ Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("A1:B1")) Is Nothing Then Exit Sub If Target.Address = "$A$1" Then Sheets("Sheet2").PrintOut Copies:=2 ElseIf Target.Address = "$B$1" Then Sheets("Sheet3").PrintOut Copies:=2 End If Cancel = True End Sub シート2とシート3を非表示にした場合、 今まで出来た(印刷)作業が出来なくなったのですが、 こちらを解消するためにはどのような記述を増やせばよろしいのでしょうか。 よろしくお願い致します。

専門家に質問してみよう