[[20120731174620]] 『荷札の自動作成』(さくら) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『荷札の自動作成』(さくら)

 色々考えていたのですがいい案が浮かばなかったのでアイデアをお聞かせください

 商品の入荷データを入力するファイルがあります。
 その時、入荷した商品によって、「荷札」を作成する必要があります。

 荷札のレイアウトは下記のようになっています。

  ┌────────┐  ┌────────┐ 
  │  150 [A1]  │  │  150 [F1]  │ ←連番
  ├────────┤  ├────────┤
  │ 00101 [A3]  │  │ 00101 [F3]  │ ←入荷ID
  ├────────┤  ├────────┤
  │   荷札数   │  │   荷札数   │
  │        │  │        │
  │ 1 [A7] /    │  │ 2 [F7] /    │ ←荷札数の分子
  │    / 10[C9]│  │    / 10[H9]│ ←荷札数の分母
  └────────┘  └────────┘

  ┌────────┐  ┌────────┐ 
  │  150 [A14]  │  │  150 [F14]  │
  ├────────┤  ├────────┤
  │ 00101 [A16]  │  │ 00101 [F16]  │
  ├────────┤  ├────────┤
  │   荷札数   │  │   荷札数   │
  │        │  │        │
  │ 3 [A20] /   │  │ 4 [F20] /   │
  │    /10[C22]│  │    /10[H22]│
  └────────┘  └────────┘

  ┌────────┐  ┌────────┐ 
  │  150 [A27]  │  │  150 [F27]  │
  ├────────┤  ├────────┤
  │ 00101 [A29]  │  │ 00101 [F29]  │
  ├────────┤  ├────────┤
  │   荷札数   │  │   荷札数   │
  │        │  │        │
  │ 5 [A33] /   │  │ 6 [F33] /   │
  │    /10[C35]│  │    /10[H35]│
  └────────┘  └────────┘

 []内はセル番号で、6枚で1ページになっています。

 現在は「入荷データ」シートから、
 ・A列の値を「連番」の部分に入力
  ↓
 ・E列の値=「入荷ID」
 ・AK列の値=「荷札数の分母」
 をVLOOKUPで表示、荷札数分コピー
 ・「荷札数の分子」セルを手打ち(1〜荷札数の分母)

 という方法でやっています。

 ですが入荷登録をする際に「荷札」があるかどうかをチェックして「連番」をメモしておき、
 更に荷札が30などあると30個分の荷札をコピーして作成して分子の部分を手打ち…
 という流れが結構面倒なので、なんとか自動で作成できないかと考えているのですが
 なかなかいい案が浮かびません…

 荷札数は商品によって2個だったり30個以上あったりまちまちです。

 例えば、「入荷登録日」を入力したら、「入荷データ」のAK列に値があるかどうかを判定、
 AK列に入っている数値分の荷札を自動作成するような流れができればいいと思っているのですが、
 どう判定して入力すればよいかと思いまして…

 漠然としていてすみません、不足部分は補いますので何か良いアイデアやアドバイスがあればお願いします

 突然出てきた「入荷登録日」がどう関係するのか分からないのでアイディアだけ。

 1:入荷データシートとデータ表示用シートと荷札シートにする
  ・入荷データシート(今あるシート)から必要な分だけを
   データ表示用シートに表示させる。
   表示方法は条件によりフィルタでも計算式でも。
  ・データ表示用シートに表示されたデータのみ荷札シートに
   反映させる。
  ・荷札シートでは前もって最大数の「枠」を作っておく必要
   がある。
  ・荷札シートでは条件付書式を使って、不必要な分の表は
   白表示にする。

 2:入荷データシートとデータ表示用シートを作り、荷札シートは
  Wordで差込印刷する。
  ・データ表示用シートの作り方は1:と同じ
  ・荷札シート自体はWordで作る。
   →差し込み印刷の方法は以下参照
     Word2007(ワード2007)実用編:ラベル印刷 
     http://www.eurus.dti.ne.jp/~yoneyama/Word2007/word2007-label.html

 3:荷札テンプレートを作っておいて、必要分だけマクロでコピー。
  ・コピー自体はマクロ記録ででも。
  ・細かい条件は提示したらマクロの達人の方々がアドバイスくれるかも
   (元の表のカタチとか、どういう条件のデータだけ作りたいのか、とか)

 こんなところでしょうか?
(普段さくらと名乗ってますが、ややこしいので今回は(桜)で)

 桜様ありがとうございます。

 説明不足ですみません
 「入荷登録日」はAJ列に、そのデータを登録した日がマクロで自動的に記録されます
 (入荷登録をマクロで行っているので)

 前日に入荷したものを「入荷日」は前日の日付にして登録することもあるため、「その日に作業したもの」を
 判別するために「入荷登録日」というのを入れています。

 例えば今、荷札の他に入荷時に「棚簿」というのを商品によって色分けして印刷するのですが、実際に入荷した日がいつであっても、
 登録した日に棚簿は出力するので「入荷登録日」をキーにしてマクロで入荷登録日と棚簿の色(AL列に入力)を選択したらまとめて
 棚簿が印刷され、印刷したものにはAL列に「印刷済」と入って次の印刷時には除外するようなマクロを組んでいます。

 それと同じように、「入荷登録日」を選択し、パレットに数値が入っているものを自動的に生成できないかと思いまして…

 今、一番面倒なのが「分母」の数だけコピーしていくのと「分子」の部分を手打ちで入力する部分です。

 差込印刷はやったことがないのですが(決まった操作しか)、荷札テンプレートを作ってそれをコピーしていくのが一番早いでしょうか…

 (さくら)

 私も差し込み印刷はめったにやりませんが、印刷するならフォーマットがずれないので便利です。
すでにExcelで問題がないなら無理にする必要はありません。

 早いか、と言われると、人による、としか言えないんですが(苦笑)
まあお勧めは2:か3:ですね。

 >今、一番面倒なのが「分母」の数だけコピーしていくのと「分子」の部分を手打ちで入力する部分です。

 とりあえず2:の所で補足しますと、
「データ表示用シート」を作るときに両方のデータを入れる列を作ってしまって、
そこに計算式をいれ、それを参照すればよいかと思います。
「分母」=データ表示シートに表示されたデータ数(または種類数?)
「分子」=上から連番
Wordではそれを読み込むだけ。

 3:のマクロだったら上記をマクロ内で出し、分母数だけコピーするマクロにし、
分子もコピー後埋め込めばよいかと。
テンプレート内に数行上の分子のセル+2とかの計算式を入れておいてもいいですね。

テンプレートは横に2枚セットのものか、6枚が1セットなら6枚分つくっておくか、
でしょうかね?

 (桜)


 とりあえず「荷札データ」のシートを作成し、「入荷データ」から該当するデータを抽出・分子作成までやって
 荷札テンプレートをコピーして荷札作成、という流れを想定して、まずデータを抽出するだけのマクロを作ってみました。

 この時、入荷登録を一日複数回行うことがあり、既に荷札作成済みのものを次の入荷登録時に印刷しなくていいように、
 荷札作成が済んだものはAK列に「済」の文字を入れようとしました。

  Sub 荷札作成()

 Dim i As Long
 Dim z As Long
 Dim r As Long
 Dim p As Long
 Dim c As Long
 Dim x As Long
 Dim Dsh As Worksheet
 Dim Msh As Worksheet

    '荷札データへ書き込み

    Set Dsh = ThisWorkbook.Worksheets("荷札データ")

        With Sheets("入荷データ")

        z = .Range("B" & .Rows.Count).End(xlUp).Row

        For i = 4 To z
            If .Cells(i, 36).Value = CDate(TextBox1.Text) Then

                '荷札列が数値のもののみ抽出
                If IsNumeric(.Cells(i, 37).Value) Then

                x = i
                c = 1          '分子カウンタ
                p = .Cells(i, 37).Value '荷札数分母

                    Do Until c = p + 1
                        r = Dsh.Range("A" & .Rows.Count).End(xlUp).Row + 1

                        Dsh.Cells(r, 1).Value = .Cells(i, 1).Value
                        Dsh.Cells(r, 2).Value = .Cells(i, 5).Value
                        Dsh.Cells(r, 3).Value = .Cells(i, 37).Value
                        Dsh.Cells(r, 4).Value = c
                        Dsh.Cells(r, 5).Value = .Cells(i, 36).Value
                        c = c + 1
                    Loop
                 .Cells(x, 37).Value = "済"

                End If

            End If
        Next i

        End With

 End Sub

 しかしこれでは「入荷データ」シートのAK列で、入荷登録日が同じ行すべてに「済」の文字が入ってしまいます。
 .Cells(x, 37).Value = "済"
 をDo Until〜の中に入れると「荷札データ」の分母の部分が「済」になってしまうし…

 ここからまた荷札テンプレートをコピーしてセルに値を入れるコードを考えなければならないのに序盤で行き詰ってます。

 アドバイスをお願いできませんでしょうか

 追記:ユーザーフォームのテキストボックスで、「入荷登録日」を指定するようにしています

 (さくら)


 レスがついていなかった様ですが。。。
 まだ見ておられますか?
 とりあえず あげてみます。

 荷札は印刷されれば良いだけなら
 一つの
 >6枚で1ページになっています。
 の中身を入れ替えながら印刷してしまうのが
 簡単に出来るのではないかと思いますが、どうでしょう。

 また、出力は途中で失敗する事も有ると思いますので
 なるべく出力が終わった時に マークをつけるのが良いと思います。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.