こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのマクロで会社別・商品別に納品書を出力したい

 エクセル2000のマクロを使って納品書を自動出力したいと思っています。
 下のように、一覧表に数値を入力してからそれをもとに納品書を出力する、というものです。

【シート1(一覧表)の内容】
   烏龍茶  ビール  日本酒

A商事   3   10     
B商事        5    1
C商事   2

【シート2(納品書)の内容】

A商事 御中

  「烏龍茶」 3ケース

 例えば、「A商事」向けに「烏龍茶」と「ビール」の納品書を1部ずつ印刷します。
 過去ログもいろいろ調べてみたのですが、なかなか良いヒントが得られませんでしたのでご教授よろしくお願いします。

投稿日時 - 2006-12-03 10:51:40

QNo.2577418

困ってます

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

マクロは、次の通り。
Sub test()
For i = 2 To 4
For j = 2 To 4
Sheets("sheet1").Select
If Cells(i, j) <> "" Then
Sheets("sheet2").Cells(1, 1) = Cells(i, 1) & "御中"
Sheets("sheet2").Cells(3, 1) = "「" & Cells(1, j) & "」"
Sheets("sheet2").Cells(3, 2) = Cells(i, j) & "ケース"
Sheets("sheet2").Select
Worksheets.Print
End If
Next
Next
End Sub

投稿日時 - 2006-12-03 17:29:46

お礼

ありがとうございました。まさにこれです!
思い通りに実現することができました。

一つひとつの意味も大体解り、自身の業務向けにアレンジしているところです。

投稿日時 - 2006-12-03 18:51:01

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

例 データ
Sheet1 A1:D4
納品先 商品烏龍茶ビール日本酒
A商事310
B商事 51
C商事2
ーーー
Sheet2
12月分納品書A1,B1,C1
 下記の通り納品しますB2
C商事御中A3,B3
 空白行
 商品名数量単価金額 B5からE5
 烏龍茶2       B6-E6
Sheet2のA1は=MONTH(NOW())を設定してます。
ーーーーー
標準モジュールに
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
'------
For i = 2 To sh1.Range("A65536").End(xlUp).Row
For j = 2 To 4
If sh1.Cells(i, j) <> "" Then
sh2.Cells(3, "A") = sh1.Cells(i, "A") 'A2会社名
sh2.Cells(6, "B") = sh1.Cells(1, "B") 'B5品名
sh2.Cells(6, "C") = sh1.Cells(i, j) 'C5数量
sh2.Cells(6, "D") = sh1.Cells(i, "F") 'D5単価
sh2.Cells(6, "E") = sh2.Cells(6, "C") * sh2.Cells(6, "D") 'E5金額
'--印刷
sh2.Range("A1:F10").PrintOut
'---クリア(会社名以外)
sh2.Cells(6, "B") = "" 'B5
sh2.Cells(6, "C") = "" 'C5
sh2.Cells(6, "D") = "" 'D5
sh2.Cells(6, "E") = "" 'E5
End If
Next j '次列へ行き繰り返し
'----クリア(変動セル全て)
sh2.Cells(2, "A") = "" 'A2
sh2.Cells(6, "B") = "" 'B5
sh2.Cells(6, "C") = "" 'C5
sh2.Cells(6, "D") = "" 'D5
sh2.Cells(6, "E") = "" 'E5
Next i '次行へ行き繰り返し
End Sub
(行が変わる時の、後半クリアC,D,E列は不要かも)
ーー
とりあえず、上記簡単データでテストしてみてください。
5枚シートが印刷され出てくるはず。
ーーー
(チューニング)
まづSheet2の印刷項目が本番ではどうなるか決めて、テストの
コードのどの部分に影響する(当然追加もある)か考えること。
Sheet2の不動文字(見出し、罫線、項目見出し)の内容、位置
フォントや書式(色、サイズ、種類、配置)など手作業かVBAで設定のこと。
変動セルの数量セルと得意先名セルは表示形式を手作業かVBAで設定のこと。フォント、行高、列幅、罫線なども同じ。
これらのコードは操作をして、マクロの記録をとればわかります。
ページ設定についても、マクロの結果の該当部分を、本件向きに適当に修正してください。(上記コードには、全く含めていません)
印刷範囲はSheet2が完成すれば自ずと決まる。
Sheet1が上例と変わるとどこが変わるか、じっくり考えてください。
ーーー
しかし、単価のない納品書など許されるの?
単価が得意先別に品物別に決まるなら、事ですぞ。
本格的なACCESSでも使う勉強をしてください。
その点、判らないので、とりあえず上の例では、ほったらかしています。
一般に仕事に関連した、この程度のものをエクセルVBAで作るのは
余程VBAのベテランでないと難しいのでは。
アクセスを使うのが適当と思うが、これも難物。

投稿日時 - 2006-12-03 18:06:46

お礼

分かりやすい説明ありがとうございます!

実は納品書ではないのです。ごめんなさい。
FAXの送付状のような書類を作成したいと思っていたのです。

書類が「A商事」向けに何件、「B商事」向けに何件という内容ですが、ネット上のサンプルを見て納付書がイメージに近いと思い、質問させて頂いた次第です。

これを機にいろいろと勉強していきたいので、よろしくお願いします。

投稿日時 - 2006-12-03 18:57:34

あなたにオススメの質問