• 締切済み

<EXCELでマクロを使って連続で印刷しようとすると2枚目でエラーにな

<EXCELでマクロを使って連続で印刷しようとすると2枚目でエラーになる。> EXCELでマクロを使って連続で印刷しようとしています。 1枚目は良いのですが、2枚目でエラーになってしまいます。 EXCEL自体が落ちてしまいます。 エラー400やエラー10004が出たりします。 アプリケーション定義や オブジェクト定義のエラーとも出ます。 マクロは次のようなものです。 Sub test() For i = 1 To 5 .Cells(2, 34).Value = i ActiveSheet.PrintOut Next i End Sub Cells(2, 34)に数字を入れてVLOOKUPでデータを差し込みます。 どんな問題があるでしょうか? 宜しくお願いいたします。 なお、EXCELはEXCEL2002です。

noname#112583
noname#112583

みんなの回答

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.2

こんにちは。 質問にありますコードは実際のコードの一部分かと察します。 また、このプログラムの場合Cells(2, 34)でシート名を判断させているかと思いますがシートを選択するコードもありません。 当方にてその部分を考慮し実行いたしましたが問題はありませんでした。 とすれば問題の箇所は上記コード以外の場所にある可能性があります。 全体のコードとシート構成を教えて頂けないでしょうか?

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

こんばんは このマクロ自身がエクセル本体を落とすようなトラブルは思いつきません。 おそらくエクセル自身の故障ですので、エクセル(もしくはOfficeごと)アンインストールして、再インストールするのが一番だと思います。 1日が2日して再インストール以外の方法が回答されなければ、再インストールを検討してみてください。 もっとも、エクセル(またはオフィス全体)の再インストールを行っても、これまで作成したデーターが失われることはないので、あれこれ悩んでいるよりも、再インストールした方が早いかもしれません(多少のユーザー設定はし直さなければなりません)。

関連するQ&A

  • マクロ 連続印刷

    マクロ初心者です。 ピボットテーブルでマクロを使って連続印刷をしようと思いました。 一応やってみて連続で印刷は出来たのですが番号がないときエラーになってしまします。 たとえば"562"という番号がないときエラーになって止まってしまいます。 番号がないときは飛ばして印刷するにはどのようにしたらよいでしょうか? よろしくお願いします。 Sub 連続印刷() ' ' 連続印刷 Macro ' ' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "562" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "947" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "950" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").ClearAllFilters ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("コンポコード").CurrentPage = _ "952" End Sub

  • エクセルのマクロの連続印刷で困っています。

    初心者です。 エクセルのマクロで通知書を指定した番号~番号までを連続印刷 させたいのですが、印刷をすると、印刷結果が最初の番号は指定した 番号まで印刷されて良かったのですが、次から最後までの番号の 印刷が同じものが印刷されていき、どんどん増えていってしまって いて困っています。 いろいろとやり方を変えてみたりしたのですが、どこが間違えて いるのかが結局分からず、どなたか詳しい方、教えていただけます ようでしょうか?>< よろしくお願いします。 ---- 失敗経緯は↓の感じです ・ただ連続印刷させたらシート1まで印刷したのでシート2を  セレクトさせるようにした ・連続印刷させるように指示した番号が繰り返し印刷される  のでプレビューさせて、プレビューされた1枚だけが印刷  させるようにプレビューを追加した にもかかわらず、プレビューでは1枚だけがプレビューされ るのに印刷結果はプレビュー以外の番号のものまで印刷されて しまいます。しかも、既に印刷がされているものまでもです。 シート2は、VLOOKUPで読み込ませているものは1人分だけの 情報のはずなのに、何故、それ以外の人の分まで印刷して しまうのでしょうか>< エクセルの構成は、 ・シート1 通知書に印刷させる用でID管理用の一覧になっています。 このシートにシート2で印刷させたいNoを入力・印刷指示 をさせています。 ・シート2 シート1で指定されたNoをVLOOKUPで読み込ませて表示させて います。(1人分で1枚のみ) ・セルには名前をつけています Sub 通知書を連続印刷する() myMsg = MsgBox(Range("通知書連続始め").Value & " 番から " & Range("通知書連続終わり").Value & " 番まで一括印刷しますか?" & Chr(10) & Chr(10) & "現在の使用プリンタは " & Application.ActivePrinter & " になっています。", vbOKCancel) If myMsg = vbOK Then For i = Range("通知書連続始め") To Range("通知書連続終わり") Range("連続印刷するNO").Value = i Worksheets("シート2").Select Worksheets("シート2").PrintPreview (False) Worksheets("シート2").PrintOut Next Else MsgBox (" 一括印刷を中止しました ") End If End Sub

  • エクセル内で、一度の印刷で2つのセルに差し込み印刷をする方法

    エクセルで差し込み印刷のマクロを組んでいます。現在は下の様に宛名を名簿に書いてある順番に印刷していくマクロですが、これに「住所」のシートを作成し、B4のセルに「住所」の内容も印刷できるようにしたいのです。つまり、一度の印刷で2つのセルに差し込み印刷をしたいのです。そのようなことは可能でしょうか。 Sub 封筒印刷() Dim i As Long i = Sheets("原本").Range("A65536").End(xlUp).Row Sheets("宛名").Select ActiveSheet.PageSetup.PrintArea = "$A$1:$E$14" For i = 1 To i Range("B5").Value = Sheets("原本").Cells(i, 1).Value ActiveSheet.PrintOut Next End Sub

  • マクロの連続印刷が突然不可能になりました(>_<)

    会社で使っているエクセルのマクロの連続印刷が先月まで出来ていたのが、今月突然エラーが出て2枚目以降が「印刷中」のまま動かなくなってしまいました。 使用しているマクロは下記の通りです。 Sub 個人票印刷() Range("会社") = Range("自") Do While Range("会社") <= Range("至") Sheets("社員").PrintOut Range("会社") = Range("会社") + 1 Loop End Sub 残業用紙を名前と部署だけ変えて印刷するために、指定番号分だけ繰り返すものなのですが、印刷しようとすると1枚目だけ印刷されてその後動かなくなってしまいます。 自1→至1 の場合は正常に印刷可能。 自1→至5 の場合は2枚目以降が印刷不可能になります。 何がエラーなのか確認する方法はあるのでしょうか? マクロは初心者で前任者のものを使用しているのみです。 どうかよろしくお願いします。

  • Excelで連続印刷をするマクロ

    Excelでデータベース的な使い方をしています。 「データ」シートにたくさんのデータがあり, 「レポート」シートのA1セルに入力した数字に該当するデータをVLOOKUP関数で読み込んでいます。 それを連続印刷するときに, 現在は For n = 1 To 135 Range("A1").Select ActiveCell.FormulaR1C1 = n ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Next n End Sub というマクロで実行させています。 (ちなみにマクロの知識がほとんどなく 「新しいマクロの記録」を利用して作ったため,ほとんど意味は分かっていませんが・・・) このマクロでも印刷できるのですが, このままだとデータが 1 ~ 135に固定されてしまいますよね。 実際はデータ数が変動するので,そのたびにマクロの数字を変えています。 そこで考えているのが 新たに「設定」シートを作成して そこのiとjのセルに数字を入力することで,自動的に マクロが n = (iに入力した数字) To (jに入力した数字) となるようにした方が便利だと考えています。 あまりマクロについての知識がないくせに ほんのちょっとの工夫でできるような気がして・・・ あれこれ試してみたけどできません。 できれば今のマクロを根本的に変えるのではなくて 少しの変更とか追加とかでできるようにしたいのですが可能でしょうか? ぜひ 教えてください。よろしくお願いします。

  • EXCEl マクロ「実行時エラー1004」について教えてください。

    EXCEl マクロ「実行時エラー1004」について教えてください。 他の方の質問も見てみましたが、それぞれの事情で違うようで分かりません。 どなたか教えていただけないでしょうか。 1.EXCELに「住所録データ」「検索結果」「ラベル」の3種シートがあります。 2.「住所録データ」から必要なものを選び、「検索結果」に表示させると、「ラベル」に結果が反映され、プリントアウトされます。 3.「検索結果」までは表示されますが、そこで下記の表示がでます。 「実行時エラー1004アプリケーション定義またはオブジェクト定義のエラーです。」 4.『デバック』を見ると下記のマクロが表示されます。  ' '一覧表のデータをレイアウトにあわせて転送 Sub ラベルへ転記(番号, 印刷位置, 複数段) Dim 用紙 As Object Sheets("検索結果").Select Set 用紙 = Sheets("ラベル") 用紙.Range("ラベル氏名") = Cells(番号 + データ開始, 氏名位置).Value + " 様" 用紙.Range("ラベル住所") = Cells(番号 + データ開始, 住所1位置).Value + " " + Cells(番号 + データ開始, 住所2位置).Value 用紙.Range("ラベル所属") = Cells(番号 + データ開始, 所属1位置).Value + " " + Cells(番号 + データ開始, 所属2位置).Value 用紙.Range("ラベル番号") = Cells(番号 + データ開始, 郵便位置).Value 用紙.Select Range("ラベル").Select Selection.Copy Cells(ラベル開始行 + (印刷位置 - 1) * ラベル行数, _ ラベル開始桁 + ラベル桁数 * (複数段 - 1)).Select ActiveSheet.Paste End Sub 5.上記「 用紙.Range("ラベル住所") = Cells(番号 + データ開始, 住所1位置).Value + " " + Cells(番号 + データ開始, 住所2位置).Value」の部分が黄色の→とラインでチェックされています。 前回このマクロを使用したあと、プリントアウトの位置を調整するため、「ラベル」のシートで、セルの高さや幅を変更したり一部削除したりしました。これが原因かもしれません。もしそうだとしたら今後このマクロは回復しないでしょうか。マクロの知識がなく質問も適切ではないかもしれませんが、どなたかお知恵を貸していただけないでしょうか。

  • 請求書を連続印刷するマクロを作りたいと思っています

    請求書のひながた、参照元データは添付図とあわせて見ていただければと思います。 元データは6月、7月分のデータもありますが非表示になってます。 元データの「発送」の部分でフィルタを使って●のついたものだけを絞りそれらだけを連続印刷したいと思ってます。 フィルタではなく●がついたものだけ印刷でもいいのですが。 請求書ひながたの方は1行目に元データを貼り付け さらにそこからひながたに差し込んでいます。 現在使ってるマクロは以下になります。 印刷したい行を選択→請求書印刷ボタンを押す。(ボタンも別になくしてしまっていいのですが) 現在はこれを一回ずつ実行して使っています。 Sub 請求書印刷() ' ' 請求書印刷 Macro Range(Selection, Selection.End(xlToLeft)).Select が×13 Selection.Copy Sheets("請求書").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut From:=2, To:=32766, Copies:=1 Sheets("元データ").Select End Sub 連続でやりたかったはずなのですが 気づいたらこんな邪道なやり方になってしまいまして。 1行目に挿入して~の部分も無くそうと思いまして(あってもいいのですが) 現在試行錯誤中です。 似たような質問を見つけて途中までやったのですが 請求書を2ページ目から印刷しろ、という命令だったり ●がついてるものだけ、という条件をどこにどう入れればいいかわからず、 また何が足りてないのかも混乱してわからなくなってしまい切羽詰まってます。 こんな状態です↓ Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub InsPrint() Const org As String = "売上" '元データのシート名 Const prs As String = "請" '印刷するシート名 Const strt As Integer = 4 '元データの実データ開始行 Dim idx As Long Dim oSht, pSht As Worksheet Set oSht = Worksheets(org) Set pSht = Worksheets(prs) For idx = strt To oSht.Range("A65536").End(xlUp).Row ' 以下の行を項目数だけコピーして定義する pSht.Range("A1").Value = oSht.Cells(idx, "B").Value pSht.Range("C1").Value = oSht.Cells(idx, "D").Value pSht.Range("D1").Value = oSht.Cells(idx, "E").Value pSht.Range("E1").Value = oSht.Cells(idx, "F").Value pSht.Range("F1").Value = oSht.Cells(idx, "G").Value pSht.Range("G1").Value = oSht.Cells(idx, "H").Value pSht.Range("K1").Value = oSht.Cells(idx, "L").Value pSht.Range("L1").Value = oSht.Cells(idx, "M").Value pSht.Range("M1").Value = oSht.Cells(idx, "N").Value pSht.Range("I1").Value = oSht.Cells(idx, "J").Value pSht.Range("Q1").Value = oSht.Cells(idx, "R").Value pSht.Range("R1").Value = oSht.Cells(idx, "S").Value pSht.Range("U1").Value = oSht.Cells(idx, "O").Value pSht.PrintOut '印刷 ' プリンタの印刷が追いつかないので5頁につき8秒休止する If (idx Mod 2) = 0 Then DoEvents Sleep 8000 'ミリ秒単位で指定 End If Next idx End Sub なんとかご助力願いたく、この場所をお借りしました。 まだまだ勉強中の身ではあるのですが、これも急にやらなければいけなくなってしまった為。 よろしければご協力お願い致します。

  • EXCELのVBAでセル値の移動でエラー

    EXCEL2002のVBAでセル値の移動をVBAでやりたいのですが (1)の様に1行は出来るのですが、(2)の様に2行を移動させるとエラー (実行時エラー1004 アプリケーション定義またはオブジェクト定義のアラーです。)が出てしまいます。 (2)のマクロでどうしてエラーが出るのか分かりません。 エラーを出さずに2行目を移動させる方法を教えてください。 (1)_________________________________________________ If Range("L1") <> detachn Then i = 9 While i >= 1 Cells(1, i + 13).Value = Cells(1, i + 12).Value i = i - 1 Wend Cells(1, 13).Value = Range("L1").Value datachn = Range("L1").Value End If (2)_______________________________________________ If Range("L1") <> detachn Then i = 9 While i >= 1 Cells(1, i + 13).Value = Cells(1, i + 12).Value Cells(2, i + 13).Value = Cells(2, i + 12).Value ←ここでエラー i = i - 1 Wend Cells(1, 13).Value = Range("L1").Value Cells(2, 13).Value = Range("L2").Value datachn = Range("L1").Value End If

  • Excelで両面印刷

    Excel2007を使っています。 プリンタは,両面印刷の設定をしている状態です。 マクロで印刷をかけると,あるシートは両面印刷してくれますが, 違うシートはしてくれません。 シート名が違うだけで,後は全く同じマクロなのに不思議です。 理由をご存じの方,教えてください。 Sub 縮小印刷1() Sheets("縮小印刷1").Select A = InputBox("どこから印刷しますか?") B = InputBox("どこまで印刷しますか?) For I = A To B Step 2 Range("D2").Value = I ActiveSheet.PageSetup.PrintArea = "$A$1:$B$16" ActiveWindow.SelectedSheets.PrintOut Copies:=1 Next I End Sub

  • 連続印刷について

    顧客名簿を作成し連続印刷により、市販されているようなアドレス帳の レイアウトで印刷したいのですが、以下の様に13人分の印刷をすると 次の連続印刷では1つ繰り上がって、印刷されるだけとなってしまいました。 次ページの印刷からは、14行めから更にその次では28行目からと 印刷設定をしたいのですが、どうすれば宜しいのでしょうか? 別シートに印刷用のレイアウトをVLOOKUPで作成し、更に別シートで印刷設定を行っています。 初心者なりに見よう見まねで作ってみたのですが・・・・ 説明が下手で分かりにくく申し訳ありません。 護教授宜しくお願い致します。 Sub 連続印刷1() ' Dim mycounter As Integer Dim sita1 As Integer Dim migi1 As Integer mycounter = 1 sita1 = Sheets("設定").Cells(4, 2) migi1 = Sheets("設定").Cells(5, 2) For mycounter = 1 To 5 Sheets("顧客名簿").Select Range("O2").Value = Sheets("住所録").Cells(mycounter + 1, 1) Range("O6").Value = Sheets("住所録").Cells(mycounter + 2, 1) Range("O10").Value = Sheets("住所録").Cells(mycounter + 3, 1) Range("O14").Value = Sheets("住所録").Cells(mycounter + 4, 1) Range("O18").Value = Sheets("住所録").Cells(mycounter + 5, 1) Range("O22").Value = Sheets("住所録").Cells(mycounter + 6, 1) Range("O26").Value = Sheets("住所録").Cells(mycounter + 7, 1) Range("O30").Value = Sheets("住所録").Cells(mycounter + 8, 1) Range("O34").Value = Sheets("住所録").Cells(mycounter + 9, 1) Range("O38").Value = Sheets("住所録").Cells(mycounter + 10, 1) Range("O42").Value = Sheets("住所録").Cells(mycounter + 11, 1) Range("O46").Value = Sheets("住所録").Cells(mycounter + 12, 1) Range("O50").Value = Sheets("住所録").Cells(mycounter + 13, 1) Range(Cells(1, 1), Cells(sita1, migi1)).Select Selection.PrintOut Copies:=Sheets("設定").Cells(6, 2) Next ' End Sub

専門家に質問してみよう