エクセルの受注表をいつも、オートフィルタで選択しては、印刷して・・・
とこれを200枚~300枚印刷してるのですが絶対に、抜けていたりダブっていたりして
もう、マクロで一括操作したいです。
オートフィルタした、A列のリストを順番に印刷したいのですが以下の条件でマクロ作れる方いらっしゃいますか?
(A列は受注番号になりますので、受注番号順にしたいことが絶対です)
1 :A~G列(7列)のうち、E,F列は非表示にする。
2 :15~16行くらいまではA4横向き印刷(1シートを1ページ設定)
3 :16行超えた場合は縦向き印刷(1シートを1ページ設定)
もし、印刷設定をマクロではできない場合は「 1 」のみでも大丈夫です。
解決できると大変うれしいです。
No.1
- 回答日時:
ご要望の内容は下記の通りであってますか?
1枚の受注一覧シートと数百枚の受注明細シートがあり、各受注明細シート名は受注番号となっている。
受注一覧のA列には今回印刷したい受注番号が入力されていて、その受注番号に該当する受注明細シートを次々に印刷したい。
印刷の際は、行数の少ない受注明細シートはA4横。行数の多いシートはA4縦で、1シート1枚で印刷する。
回答ありがとうございます。
補足させていただきました!
印刷設定は、受注番号ごとの印刷をしたあとに40~50代の方が使う用紙となるため
合わせてなるべく小さい文字にならないように配慮するためです。
また、2枚にしないのにはこちらの業務の一環ではありますが、出荷漏れを防ぐためです。
よろしくお願いいたします。
No.2
- 回答日時:
「なにもないデータだけ印刷されてしまう」そうですが、そのマクロを補足にアップすることはできますか?それをベースにした方が、理解しやすいと思うのですが…。
申し訳ありません、文字数制限の関係で、省略してしまいました。
以下のマクロが惜しいものになります。
Sub オートフィルター連続印刷() 'この行から
Dim i, j As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1") '←Sheet名は実際のSheet名に!
Set ws2 = Worksheets("sheet2")
ws2.Cells.Clear
For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Range(ws1.Cells(2, 4), ws1.Cells(i, 4)), ws1.Cells(i, 4)) = 1 Then
ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws1.Cells(i, 4) '←データは2行目1列目から始めること!
End If
Next i
j = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row
Range(ws1.Cells(1, 1), ws1.Cells(j, 4)).AutoFilter field:=4, Criteria1:=ws2.Cells(i, 1)'AutoFilter field:=○には左から何列目のデータをフィルタ Cells(i, 1)iは1ずつ増えていくのでセルの行が下方向へ進む。
ws1.PrintOut
Next i
End Sub 'この行まで
宜しくお願い致します><
No.3
- 回答日時:
以下は、もし下らない、そんなことは必要がないとお思いになりましたら、無視なさって一向に構いません。
私の考えすぎかもしれませんが、このご質問は、私にとっては、ネットで作成依頼では、ちょっと荷が重すぎます。本当は、経費的には掛かりますが、プログラマーの人を読んで作ってもらったほうが良いような気がします。参考サイトの内容は、簡易型ですから、もし、ここで進めるなら新たに考えたほうが良さそうな気がします。
そして、できれば、今手作業でやっていることをどこまで、マクロで反映できるか、そういうアプローチのほうが良いような気がしています。
私はいくつかの問題点は想像できます。ネットの参考サイトとは比にならないのではないでしょうか。もちろん、1~3までまったく問題はありません。そういう問題ではないような気がするのです。
①
>1シート に受注番号順になってはおらず、全部ランダムに入力されています。
受注番号がランダムになっているとしても、ネットの参考サイトは、同じ名前で検索するように、この受注番号も同じ番号があって、それを印刷するというのでしょうけれども、元のリストは順番自体はある絶対的なものがあるのかな、と思います。
ふつうなら、最初に、ソートを掛けてしまうはずです。
それをしないのは、ここには書かれていない時系列が存在しているのかと思いました。
>受注番号順にしたいことが絶対です
ランダムな番号があり、そこから一意にものを取り出して、並べ替えをする、という基本的な作業がありますね。しかし、たぶん、「オーダーシート」の並べ替えは、アンタッチャブルのような気がしています。
②
おそらく手作業ですることをマクロに写し込むにしても、
>絶対に、抜けていたりダブっていたりして、もう、マクロで一括操作したいです。
抜けていたり、ダブったりとは、数値のことでしょうか。
その問題はどうして起きるのでしょうか。人間がやって失敗することは、マクロでも同じ失敗する可能性があります。
ひとつの注文に対して、「200枚~300枚」とは半端な数ではありませんから、たぶん、マクロで、今、どこを印刷しているかという、ページのカウントの機能と中止命令の際の記録を付けてあげないといけないような気がするのです。
>2 :15~16行くらいまではA4横向き印刷(1シートを1ページ設定)
>3 :16行超えた場合は縦向き印刷(1シートを1ページ設定)
これ自体は、1枚ですね。同じものを何百枚ということでしょうね。
この前、同じようにプリントの質問があった時に、必ず1枚に納まるという前提条件がありました。印刷のルールには、縮小をしないこと、という暗黙のルールがあるらしいし、現に私は、今も絶対的に守っています。
もし、私の想像が全部当てはまるようなら、難易度はかなり高いと思います。
マクロでもミスすることはあると思うのですが、そのマクロのミスをきちんと記録するような方法を考えて、その後でも、修復して印刷できるようにしたらと考えています。それをメインテする側の負担は少し多くなるかもしれませんが、マクロなしでやっていた時代よりは、はるかにマシになると思います。
なお、一応原案は、こちらでも作りましたが、私は、発表してしまうと、その後の制作意欲が下がってしまうので、少し確認を取りたいと思いました。もちろん、他の方のもので良いものがあれば、それに越したことはありません。
いくつかのエラーに対するものとして、
・印刷ページにはカウントを振る。(何枚プリントしたか記録する。)
・トナー切れ/紙きれの対策
・上記に合わせて、マクロの中途からの印刷の開始
・印刷が始まってからの緊急停止命令(ESCで印刷を止める)
・1ページに納まらない時の処置は、印刷内容を縮小するか?
など、思いつくものがあります。
これらのテクニックは、昔からあるものです。
p.s.現実に注文番号があるのにも関わらず、何もないもののに印刷されてしまうものについては、そんなことはあるのでしょうか?
No.4ベストアンサー
- 回答日時:
こんな感じで、どうでしょう。
ちなみに、下記のマクロからは、さらにMacro1、Macro2を呼んでいます。
Macro1、Macro2は、横方向印刷と縦方向印刷をマクロの自動記録を使って作成してください。
Sub オートフィルター連続印刷() 'この行から
Dim i, j As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("オーダーシート")
Set ws2 = Worksheets("sheet2")
ws2.Cells.Clear
For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Range(ws1.Cells(2, 1), ws1.Cells(i, 1)), ws1.Cells(i, 1)) = 1 Then
ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws1.Cells(i, 1)
End If
Next i
j = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ws2.Cells(Rows.Count, 1).End(xlUp).Row
Range(ws1.Cells(1, 1), ws1.Cells(j, 1)).AutoFilter field:=1, Criteria1:=ws2.Cells(i, 1)
If WorksheetFunction.Subtotal(103, Range("A:A")) < 14 Then
Call Macro1
Else
Call Macro2
End If
Next i
End Sub 'この行まで
お早うございます。
他の回答者様の意見もあって、かなり無理な事をお願いしていたのかと反省していました・・・
休日悩みながらマクロをいじっていたのですけど
私の知識が足りず苦戦しておりました!
マクロの記録で何度か失敗してやりなおして・・・とやって
思うようにできました!
ありがとうございました><
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら…
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
オートフィルタのリストを順番に印刷できるマクロ
Windows Vista・XP
-
Excel フィルタをかけた後の各項目を、自動的に印刷する方法は?
その他(Microsoft Office)
-
「オートフィルタ」の作業を自動化したいのですが…
Excel(エクセル)
-
-
4
オートフィルタの印刷をしたい。
Excel(エクセル)
-
5
VBA オートフィルタで抽出したものを連続貼り付け
その他(Microsoft Office)
-
6
【ExcelVBA】全シートのセルの数式を値に変換する事は可能でしょうか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで謎の2枚目が印刷される
-
エクセル 同じシートで印刷ペ...
-
エクセルで印刷するとき、連番...
-
エクセルで白紙ページを消す方...
-
Excel 複数のシートの印刷順の...
-
VBAでホルダー内のPDFを一括印...
-
エクセルで図形やオートシェイ...
-
数式による空白を無視して印刷...
-
EXCELで段組みできますか?
-
エクセルだけ印刷しても白紙です。
-
エクセル「改ページビューで印...
-
エクセルの表の印刷について複...
-
エクセルで空白の部分を印刷範...
-
Excelでセルに色をつけても、モ...
-
エクセルから帳票形式に差込印...
-
エクセルの全シートをPDFにでき...
-
エクセル2007とパワーポイ...
-
Macエクセルで、チェックボック...
-
Excelで印刷すると、ルビがずれ...
-
印刷範囲指定した部分でのヘッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで謎の2枚目が印刷される
-
エクセル 同じシートで印刷ペ...
-
差込印刷で郵便番号のハイフン...
-
エクセルで白紙ページを消す方...
-
Excel 複数のシートの印刷順の...
-
数式による空白を無視して印刷...
-
VBAでホルダー内のPDFを一括印...
-
エクセルで印刷するとき、連番...
-
B5縦で作ったエクセル文書をA4...
-
エクセルだけ印刷しても白紙です。
-
エクセルの全シートをPDFにでき...
-
エクセル 2upできません。
-
EXCELで段組みできますか?
-
エクセルの長い表を3列で印刷...
-
エクセルで図形やオートシェイ...
-
エクセルで空白の部分を印刷範...
-
エクセルから帳票形式に差込印...
-
縦一列の表を縦三列にして印刷...
-
エクセルの印刷範囲の自動変更...
-
エクセル「改ページビューで印...
おすすめ情報
回答頂い方の為に補足させていただきます。
(ありがとうございます!)
シートは分かれていません。
1シート に受注番号順になってはおらず、全部ランダムに入力されています。
例えば
A列に受注番号 B列に商品名 C列に数量 D列に単価 E列~F列は不要データ G列に合計価格
となっています。
1000~2000行くらいあります。
ネットで検索したらそれに近いマクロがありましたので、URLをのせておきます。
http://rmoon3.seesaa.net/article/353151419.html
さらに、印刷設定も加えることができたらうれしいです。ということと
どこをどう名前を入れ替えていけばいいのか微妙にわからずなのです。
なにもないデータだけ印刷されてしまいます( ^ω^)・・・
ちなみにシート1は、「オーダーシート」という名前です。シート2、シート3とあるのですが、空です。
あとさらに補足ですが、印刷設定はその通りです。
少ない行(14行までとします)A4サイズ横向き印刷
それ以上の行(15行目以降とします)は、A4サイズ縦向き印刷
両方とも1シート1枚に印刷する設定です。
出荷漏れを防ぐため、必ず1枚印刷しています。
ランダムのため、実際A列をソートしないと、受注量(行数)がわからないので
今は手動で印刷時に縦横判断していますが、大体は15行前後で切り替えています。
長文で失礼いたしました。