
エクセルの受注表をいつも、オートフィルタで選択しては、印刷して・・・
とこれを200枚~300枚印刷してるのですが絶対に、抜けていたりダブっていたりして
もう、マクロで一括操作したいです。
オートフィルタした、A列のリストを順番に印刷したいのですが以下の条件でマクロ作れる方いらっしゃいますか?
(A列は受注番号になりますので、受注番号順にしたいことが絶対です)
1 :A~G列(7列)のうち、E,F列は非表示にする。
2 :15~16行くらいまではA4横向き印刷(1シートを1ページ設定)
3 :16行超えた場合は縦向き印刷(1シートを1ページ設定)
もし、印刷設定をマクロではできない場合は「 1 」のみでも大丈夫です。
解決できると大変うれしいです。
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 'この行まで
お早うございます。
他の回答者様の意見もあって、かなり無理な事をお願いしていたのかと反省していました・・・
休日悩みながらマクロをいじっていたのですけど
私の知識が足りず苦戦しておりました!
マクロの記録で何度か失敗してやりなおして・・・とやって
思うようにできました!
ありがとうございました><
No.3
- 回答日時:
以下は、もし下らない、そんなことは必要がないとお思いになりましたら、無視なさって一向に構いません。
私の考えすぎかもしれませんが、このご質問は、私にとっては、ネットで作成依頼では、ちょっと荷が重すぎます。本当は、経費的には掛かりますが、プログラマーの人を読んで作ってもらったほうが良いような気がします。参考サイトの内容は、簡易型ですから、もし、ここで進めるなら新たに考えたほうが良さそうな気がします。
そして、できれば、今手作業でやっていることをどこまで、マクロで反映できるか、そういうアプローチのほうが良いような気がしています。
私はいくつかの問題点は想像できます。ネットの参考サイトとは比にならないのではないでしょうか。もちろん、1~3までまったく問題はありません。そういう問題ではないような気がするのです。
①
>1シート に受注番号順になってはおらず、全部ランダムに入力されています。
受注番号がランダムになっているとしても、ネットの参考サイトは、同じ名前で検索するように、この受注番号も同じ番号があって、それを印刷するというのでしょうけれども、元のリストは順番自体はある絶対的なものがあるのかな、と思います。
ふつうなら、最初に、ソートを掛けてしまうはずです。
それをしないのは、ここには書かれていない時系列が存在しているのかと思いました。
>受注番号順にしたいことが絶対です
ランダムな番号があり、そこから一意にものを取り出して、並べ替えをする、という基本的な作業がありますね。しかし、たぶん、「オーダーシート」の並べ替えは、アンタッチャブルのような気がしています。
②
おそらく手作業ですることをマクロに写し込むにしても、
>絶対に、抜けていたりダブっていたりして、もう、マクロで一括操作したいです。
抜けていたり、ダブったりとは、数値のことでしょうか。
その問題はどうして起きるのでしょうか。人間がやって失敗することは、マクロでも同じ失敗する可能性があります。
ひとつの注文に対して、「200枚~300枚」とは半端な数ではありませんから、たぶん、マクロで、今、どこを印刷しているかという、ページのカウントの機能と中止命令の際の記録を付けてあげないといけないような気がするのです。
>2 :15~16行くらいまではA4横向き印刷(1シートを1ページ設定)
>3 :16行超えた場合は縦向き印刷(1シートを1ページ設定)
これ自体は、1枚ですね。同じものを何百枚ということでしょうね。
この前、同じようにプリントの質問があった時に、必ず1枚に納まるという前提条件がありました。印刷のルールには、縮小をしないこと、という暗黙のルールがあるらしいし、現に私は、今も絶対的に守っています。
もし、私の想像が全部当てはまるようなら、難易度はかなり高いと思います。
マクロでもミスすることはあると思うのですが、そのマクロのミスをきちんと記録するような方法を考えて、その後でも、修復して印刷できるようにしたらと考えています。それをメインテする側の負担は少し多くなるかもしれませんが、マクロなしでやっていた時代よりは、はるかにマシになると思います。
なお、一応原案は、こちらでも作りましたが、私は、発表してしまうと、その後の制作意欲が下がってしまうので、少し確認を取りたいと思いました。もちろん、他の方のもので良いものがあれば、それに越したことはありません。
いくつかのエラーに対するものとして、
・印刷ページにはカウントを振る。(何枚プリントしたか記録する。)
・トナー切れ/紙きれの対策
・上記に合わせて、マクロの中途からの印刷の開始
・印刷が始まってからの緊急停止命令(ESCで印刷を止める)
・1ページに納まらない時の処置は、印刷内容を縮小するか?
など、思いつくものがあります。
これらのテクニックは、昔からあるものです。
p.s.現実に注文番号があるのにも関わらず、何もないもののに印刷されてしまうものについては、そんなことはあるのでしょうか?
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.1
- 回答日時:
ご要望の内容は下記の通りであってますか?
1枚の受注一覧シートと数百枚の受注明細シートがあり、各受注明細シート名は受注番号となっている。
受注一覧のA列には今回印刷したい受注番号が入力されていて、その受注番号に該当する受注明細シートを次々に印刷したい。
印刷の際は、行数の少ない受注明細シートはA4横。行数の多いシートはA4縦で、1シート1枚で印刷する。
回答ありがとうございます。
補足させていただきました!
印刷設定は、受注番号ごとの印刷をしたあとに40~50代の方が使う用紙となるため
合わせてなるべく小さい文字にならないように配慮するためです。
また、2枚にしないのにはこちらの業務の一環ではありますが、出荷漏れを防ぐためです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
- その他(音楽・ダンス・舞台芸能) チケットに座席番号のみを印刷する方法 4 2023/02/10 11:21
- Excel(エクセル) エクセル2013「次のページ数に合わせて印刷」が小さすぎる 9 2023/03/28 10:18
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Visual Basic(VBA) VBAで不特定枚数印刷をしたいです。 4 2022/08/02 07:30
- Excel(エクセル) Excelであるシートだけ印刷できない 1 2022/04/01 09:04
このQ&Aを見た人はこんなQ&Aも見ています
-
オートフィルタのリストを順番に印刷できるマクロ
Windows Vista・XP
-
Excel フィルタをかけた後の各項目を、自動的に印刷する方法は?
その他(Microsoft Office)
-
「オートフィルタ」の作業を自動化したいのですが…
Excel(エクセル)
-
-
4
エクセルVBAでフィルタ印刷の方法を教えてください。
Excel(エクセル)
-
5
オートフィルタの印刷をしたい。
Excel(エクセル)
-
6
マクロ オートフィルタの検索値を所定のセルから参照
Excel(エクセル)
-
7
エクセルのオートフィルタ機能を使った際の印刷
Excel(エクセル)
-
8
VBA オートフィルタで抽出したものを連続貼り付け
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで白紙ページを消す方...
-
エクセルの長い表を3列で印刷...
-
エクセル 同じシートで印刷ペ...
-
エクセルで特定の行のみ印刷したい
-
請求書と領収書の作成
-
Excel2010で印刷範囲として指定...
-
Excel 複数のシートの印刷順の...
-
Excleで正確なレイアウト図を作...
-
エクセルで謎の2枚目が印刷される
-
エクセルだけ印刷しても白紙です。
-
エクセルマクロでデータをPDFに...
-
エクセル2007(VBA)で選択セル...
-
エクセルの全シートをPDFにでき...
-
エクセル 白黒印刷で白線を印刷...
-
VBAでホルダー内のPDFを一括印...
-
エクセルで図形やオートシェイ...
-
Excelで印刷すると、ルビがずれ...
-
VBAを使用して、フォルダ内にあ...
-
エクセル「改ページビューで印...
-
エクセル 印刷の範囲設定について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 同じシートで印刷ペ...
-
エクセルで謎の2枚目が印刷される
-
Excel 複数のシートの印刷順の...
-
エクセルで白紙ページを消す方...
-
数式による空白を無視して印刷...
-
差込印刷で郵便番号のハイフン...
-
エクセルで印刷するとき、連番...
-
エクセルだけ印刷しても白紙です。
-
VBAでホルダー内のPDFを一括印...
-
エクセルの全シートをPDFにでき...
-
EXCELで段組みできますか?
-
エクセルの長い表を3列で印刷...
-
Excelで印刷すると、ルビがずれ...
-
エクセル 2upできません。
-
B5縦で作ったエクセル文書をA4...
-
エクセルで図形やオートシェイ...
-
エクセル「改ページビューで印...
-
Excelでセルに色をつけても、モ...
-
エクセルから帳票形式に差込印...
-
Excelのセルに色をつけても印刷...
おすすめ情報
回答頂い方の為に補足させていただきます。
(ありがとうございます!)
シートは分かれていません。
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行前後で切り替えています。
長文で失礼いたしました。