エクセルマクロの問題、印刷できない

このQ&Aのポイント
  • エクセルのマクロを使用している際に、印刷がうまくできない問題が発生しています。
  • マクロの中で指定している範囲が正しく選択されず、そのために印刷範囲が正しく設定されないようです。
  • マクロの修正を行い、印刷範囲の指定が適切に行われるようにする必要があります。
回答を見る
  • ベストアンサー

エクセルマクロ

お世話になります。 下記の記述でどこがおかしいのでしょうか 上手く印刷できません。 Sub Macro13() ' ' 'Dim i As Long For i = 1 To 4 Range("Ai:Ei").Select Selection.Copy Sheets("カード").Select Range("G1:K1").Select Selection.Paste Range("A1:F21").Select Application.CutCopyMode = False ActiveSheet.PageSetup.PrintArea = "$A$1:$F$21" ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True Next i End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • rukuku
  • ベストアンサー率42% (401/933)
回答No.1

こんばんは >上手く印刷できません。 具体的な内容を教えてください おそらく、 「印刷できるものはありません」 のエラーになってしまうと想定して回答します。 >Range("Ai:Ei").Select この指定ではセルAI~セルEIの選択になります。 A1~E1をコピーしてペースト A2~E2をコピーしてペースト A3~E3をコピーしてペースト A4~E4をコピーしてペースト ということをしたいならば、「Cells」を使います。具体的には以下のようにします。 Range(Cells(i, "A"), Cells(i, "E")).Select もうひとつ、 >Range("G1:K1").Select >Selection.Paste >Range("A1:F21").Select >Application.CutCopyMode = False >ActiveSheet.PageSetup.PrintArea = "$A$1:$F$21" データの貼り付け先はG1~K1なのに、 印刷範囲がA1~F21です。 これでは、せっかくマクロでコピー&ペーストしたデータが印刷されません。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

>Range("Ai:Ei").Select ーー 書くとするなら、 Range("Ai:Ei").Select Selection.Copy Sheets("カード").Select Range("G1:K1").Select Selection.Paste の部分は Sub test01() i = 2 Range("A" & i & ":E" & i).Copy Sheets("Sheet2").Range("G1") End Sub などだ。 (1)マクロの記録の方式を簡略化した部分と (2)Range("Ai:Ei").Selectの可笑しな書き方と (3)コピー貼り付けを簡略にしたコードを 勉強(経験)してみて。 もっともっと経験を積まないと。 色々やってみて勉強しないと直ぐ質問コーナーに投げていては上達しないと思う。 ほかにも可笑しなところがあるかもしれないがとりあえず。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! No.1さんが仰っているように「カード」SheetのG1~K1セルにコピー&ペーストしていて、 印刷範囲の設定がA1~F21になっていますので、G列以降は印刷しなくて良い!と言うコトのですかね? ※ G1~K1セルにデータが入ると関数等により印刷範囲指定セルのデータが変わる等々・・・ 一応質問内容を素直にやってみるコードにしてみました。 ごくごく単純に! Sub test() Dim i As Long Dim ws As Worksheet Set ws = Worksheets("カード") For i = 1 To 4 Range(Cells(i, "A"), Cells(i, "E")).Copy Destination:=ws.Cells(1, "G") ws.Activate ActiveSheet.PageSetup.PrintArea = ws.Range("$A$1:$F$21") ws.PrintOut Next i End Sub こういったコトをご希望だったのでしょうか? 尚、上記「※」の行のようなコトがあるのであれば、関数によっては計算結果表示まで若干時間がかかる場合もあるかと思います。 その場合何秒か時間をおいて Loopさせる方が良いかもしれませんね。 (例)Loopを3秒待つ場合・・・ 一例ですが、最後を ws.PrintOut Application.Wait Now() + TimeValue("00:00:03") Next i といったような感じでも良いかと思います。 この程度ですが、的外れならごめんなさい。m(_ _)m

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

コピー元の間違い1: コピーするセル範囲の指定の書き方が間違っている コピー元間違いの2: ループの2回目以降,コピーする元のシートの指定が間違っている 間違いとは判断できない箇所: 既出回答にもあるように,カードシートの「どの範囲を印刷したい」のか,シートの様子が見えないので不明 (ただし間違っていないと仮定) 作成例: sub macro1()  dim i as integer  worksheets("カード").pagesetup.printarea = "$A$1:$F$21"  for i = 1 to 4   worksheets("元データのシート名").range("A" & i).resize(1, 5).copy _    destination:=worksheets("カード").range("G1")   worksheets("カード").printout  next i end sub

関連するQ&A

  • エクセル2007 印刷マクロ

    A1からE25までを印刷したいのですが,現在このようにしています。 ActiveSheet.PageSetup.PrintArea = "$A$1:$E$12" ActiveWindow.SelectedSheets.PrintOut Copies:=1 ActiveSheet.PageSetup.PrintArea = "$A$13:$E$25" ActiveWindow.SelectedSheets.PrintOut Copies:=1 これを,ActiveSheet.PageSetup.PrintArea = "$A$1:$E$25" にすると,1枚目と2枚目の区切りが自分の思うようになりません。 改ページプレビューを使って,ページ区切りを設定するのではなく, マクロで何とかしたいと考えています。 1枚目はA1:E12,2枚目はA13:E25に固定する方法を教えて下さい。

  • マクロ編集プリントアウト

    Sheets("Sheet1").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet4").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("Sheet1").Select Range("A9").Select Sheets("Sheet1").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet4").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("Sheet1").Select Range("A15").Select これで2回プリントアウトされていることになります。 6行ずつ下方にデータが続いています。 データ行数は常に変化します。 dim i as long  for i = 3 to 99 step 6   if worksheets("Sheet1").cells(i, "A") = "" then    worksheets("Sheet2").range("A3:H8").value = worksheets("Sheet1").cells(i - 6, "A").resize(6, 8).value       end if  next i を使用してうまくまとめることはできるでしょうか?

  • エクセル2007 メッセージボックスについて教えて下さい

    セルA1に"1"が入れば"b10~m60"を印刷(1ページ分)、 同様に、"2"が入れば"b61~m110"(2ページ分)、"3"が入れば"b111~m160"(2ページ分)を印刷する マクロボタンがあります。 現在、印刷を実行する前にメッセージボックスで「印刷します」→「OK」「キャンセル」の確認をしていますが このメッセージに、セルA1に入れた数値で確認したいのですができるでしょうか?? 例)セルA1="1"→MsgBox「1ページ印刷します」    セルA1="2"→MsgBox「2ページ印刷します」 分かりづらい説明で申し訳ありません。よろしくお願いします。 ↓現在の記述↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Sub test() If MsgBox("印刷します", vbOKCancel) = vbCancel Then Exit Sub End If Select Case Range("a1").Value   Case "1" ActiveSheet.PageSetup.PrintArea = "b10:m60" ActiveWindow.SelectedSheets.PrintOut Copies:=1  Case "2" ActiveSheet.PageSetup.PrintArea = "b61:m110" ActiveWindow.SelectedSheets.PrintOut Copies:=1   Case "3" ActiveSheet.PageSetup.PrintArea = "b111:m160" ActiveWindow.SelectedSheets.PrintOut Copies:=1  End Select End Sub

  • エクセル マクロの作り方

    はじめまして エクセルのマクロ初心者です。 ツール→マクロ→新しいマクロの記録にて 開いているシートをA1~V68まで(すべての範囲でもOKです)をコピーし、別の貼り付け用シートに貼付、3つのタブを印刷して閉じ、開いているシートを表示する。という内容のマクロを登録しました。 台紙で以上のマクロを登録し、台紙を複製しました。 マクロを実行すると複製されたシートのA1~V68までではなく、台紙のA1~V68までが印刷されて困っています。 どうすれば解決するでしょうか???詳しい方おしえてください。 尚、下記に記録されたものを載せておきますので、訂正部分など教えてもらえたら助かります。 (マクロの記録の上部を訂正すると良いような気はするのですが…。初心者なのもので範囲の指定の仕方がわるいのでしょうか???) よろしくお願いします。 Sub マクロ名() ' ' マクロ名 Macro ' マクロ記録日 : 2007/10/14 ユーザー名 : ??? ' ' Application.Run "hozon1.初期" Range("A1:V68").Select Selection.Copy ChDir "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿" Workbooks.Open Filename:= _ "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿\平日,日曜、祭日点呼簿.xls" Cells.Select ActiveSheet.Buttons.Add(509.25, 1.5, 72.75, 12.75).Select ActiveSheet.Paste Sheets("大型1").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("大型2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("小型1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWindow.Close ActiveWindow.SmallScroll Down:=-51 Range("J3").Select End Sub

  • 簡単マクロ編集

    Sheets("Sheet1").Select  ←Range("A3:H8") Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet4").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 下方にこの操作を繰り返ししたいのですが Dim i As Long Worksheets("Sheet1").Select For i = 3 To 100 Step 6 If Cells(i, "A") = "" Then Exit Sub End If Cells(i, "A").Resize(6, 8).Copy Destination:=Worksheets("Sheet2").Range("A3:H8") Next i 貼付けは値で貼り付けたいと思います。 どう組み合わせればよいですか?

  • マクロで印刷ができません

    簡単な表を作成し、デザインモードでフォームコントロールでボタンを作成し、マクロの作成をしました。 印刷するためにボタンをクリックしても 印刷プレビューで画面が止まってしまいます。 ところがプレビュー画面を閉じると印刷が始まります。 何度やりかえてもマクロで最後まで印刷ができません。 記述は次のようになっています。 プリントも記述されているようなのですが・・・・ エクセル2007を使っています。 どなたか助けてください Sub ボタン3_Click() ' ' ボタン3_Click Macro ' ' ActiveSheet.Shapes("Button 3").Select Selection.Characters.Text = "ボタン 3" Range("B3:E12").Select ActiveSheet.PageSetup.PrintArea = "$B$3:$E$12" ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

  • エクセルマクロで印刷実行時に「黒」の設定・・・

    どなたか教えてください。 マクロで印刷の実行をしています。 シート上にはカラー文字が含まれていますが「常に黒」の 単色で印刷させたいのですが、方法はないでしょうか? 現状はプリンターのプロパティーで(カラー/黒)の選択を 黒にして手動で印刷しています。EPSON PX-V500使っています。 よろしくお願いします(ponta_024) ---------------------------------------------------------- ActiveSheet.PageSetup.PrintArea = "$B$3:$I$31" ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _ :=True このような記述になっております。

  • エクセル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初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • エクセル マクロ 印刷指定

    マクロが解りません。色々調べてマクロの記録を使って、下記のマクロを作りました。 1枚目の印刷を2枚目、3枚目印刷として書き足してみました。 しかしエラーが出て2番目のシートからの印刷ができません。 Sub 連絡票印刷() ' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+p ' Sheets("連絡票").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("連絡票").Range("p1").Value, To:=Sheets("連絡票").Range("q1").Value, Collate:=True, IgnorePrintAreas:=False Sheets("予定表").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("予定表").Range("y1").Value, To:=Sheets("予定表").Range("z2").Value, Collate:=True, IgnorePrintAreas:=False Sheets("配車表").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("配車表").Range("s1").Value, To:=Sheets("配車表").Range("t2").Value, Collate:=True, IgnorePrintAreas:=False Dim str As String str = Worksheets("連絡票").Range("r1") Worksheets(str).Select End Sub いろいろ解らないなりに書き換えをしてみましたが、やっぱり2番目のシートから印刷ができません。 教えていただけませんでしょうか。

専門家に質問してみよう