dポイントプレゼントキャンペーン実施中!

VBAを用いて繰り返し自動的に印刷するにはどうしたら良いのですか?ループコードって何?
エクセルで作った納品書、件数が数百件あっても自動的にある件数全て打ち出せるようにしたいのですが。。。

A 回答 (6件)

つまりこういうことですか?



●"シート2"は、以下のような感じ。
━━━━━━┳━━┳━━━
受注ナンバー ┃顧客┃請求額
━━━━━━╋━━╋━━━
      1001┃ A社┃10000
━━━━━━╋━━╋━━━
      1002┃ B社┃20000
━━━━━━╋━━╋━━━
      1003┃ C社┃50000
━━━━━━╋━━╋━━━

●"シート1"の特定のセルに、たとえば「1001」と入力すると、上記の表から得た「A社」、「10000円」などという情報が各欄に表示される。

●上記"シート1"の特定のセルに「1001」を入力して印刷、「1002」を入力して印刷、…、という一連の繰り返し作業を自動で行わせたい。

以上でよければ、以下のようにできます。


Public Sub PrintAll()

Dim rngOrderNoArray As Range
Dim rngOrderNoForm As Range
Dim rngOrderNo As Range

Set rngOrderNoArray = Worksheets("シート2").Range("A2:A100") ★"シート2"の受注ナンバーの範囲
Set rngOrderNoForm = Worksheets("シート1").Range("A1") ★"シート1"の入力欄

For Each rngOrderNo In rngOrderNoArray
rngOrderNoForm.Value = rngOrderNo.Value
Worksheets("シート1").PrintOut
Next

End Sub

あくまでもサンプルです。上記を実行すると冒頭の動作を「A2:A100」など設定した分だけ繰り返します。途中でキャンセルできるようにしたり、などは必要に応じて追加してください。
    • good
    • 0
この回答へのお礼

本当に本当にありがとうございました。
頑張ってチャレンジします。

お礼日時:2005/07/22 23:02

Range(Cells(x,y),Cells(z,u)).PrintOutがポイントです。


印刷する範囲がいつも一定であればx、y、z、uは定数字です。
変わるなら、プログラム内で計算や場所(セル範囲)の表を持つ。
納品書の定位置に受注シートデータから持ってくるのは
(別質問に答えたものですが)下記の「データを移す」のところが参考に
なるでしょう。
ほかにも2シートの扱いなど参考になるでしょう。応用が広く、すっきり
していると自負しています。(全体は他の問題用ですから気にしないで)
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
'最下行数を知る
d = sh1.Range("A65536").End(xlUp).Row
MsgBox d
j = 1 'sheet2の先頭行
m = "XXX" 'Sheet1の第1行以外の値をセット
For i = 1 To d
'---A列直前の行と変わったか
If sh1.Cells(i, "A") = m Then
Else
'----変わったときA,B列をSheet2へ移す
sh2.Cells(j, "A") = sh1.Cells(i, "A")  ’データを移す
sh2.Cells(j, "B") = sh1.Cells(i, "B")
m = sh1.Cells(i, "A")
j = j + 1 'Sheet2の次行へ
End If
Next i
End Sub
仕事にVBAを使うには、中級以上のスキルがいります。覚悟の程を。
    • good
    • 0
この回答へのお礼

本当に本当にありがとうございました。
頑張ってチャレンジします。

お礼日時:2005/07/22 23:01

>シート1の納品書内の受注ナンバーを入力する



番号の入力は納品書の「セル」と言うことでしょうか?

>シート2のデーターが自動で入る

納品書の「受注ナンバー」に入力された番号を基に機能するのですね?
この動作はボタンで実行するのですか?
それとも、シートのイベント(自動)ですか?
印刷は手動?


---------------------------------
基本的には、納品書作成(記入)マクロに受注番号を渡して納品書を作成して印刷、の繰返しをすれば良いだけです。

注番が連番の数値なら簡単ですが、それ以外なら面倒になります。

sub 連続印刷
’受注番号指定処理(開始番号・終了番号設定)
do
注番作成処理
call 請求書作成(注番)
印刷処理
終了判定処理
Loop
End Sub

のような流れになります。
    • good
    • 0
この回答へのお礼

本当に本当にありがとうございました。
頑張ってチャレンジします。

お礼日時:2005/07/22 23:03

こんにちは。



・シート1に納品書のフォームがある。
・シート2には数100件以上入る顧客注文リスト表がある。
・シート1の納品書に、シート2のデーターが自動で入るようになっている。
・注文リスト内全件が自動に納品書に反映され印刷したい。

結局、これだけの内容からですと、現状では、残念ながら、VBAでの解決にまでには結びつかないのではないかと思います。

ここで回答できる範囲としては、コーディングのトラブルやいくつかのピンポイントで示せるテクニックを書くだけで、初期からコードを書くものは限られています。今、具体的なコーディングでお困りのことがあれば、お教えできるかと思いますが、そうでないとしたら、私には不可能です。
    • good
    • 0
この回答へのお礼

お手数をおかけいたしました。
ありがとうございました。

お礼日時:2005/07/22 23:05

こんばんは。



単純に回答が付けられないのは、「打ち出す」ものは、ひとつのシートの中のものか、それとも複数のシート全なのかどうかということですね。

もし、ひとつのシートの中のものだとすれば、同じものをプリントアウトするわけではありませんから、当然、内容が変わっていくはずです。それら、プリントアウトする前段階の部分がはっきりしないと、Do ~ While などと教えても何も役に立たないような気がします。

この回答への補足

ありがとうございます。

シート1に納品書のフォームがあり、シート2には数100件以上は入る顧客注文リスト表があります。シート1の納品書内の受注ナンバーを入力する事により、シート2のデーターが反映されシート1の納品書にデーターが自動で入るようにしました。件数は日によりまちまちですが(数件から数100件)注文リスト内全件が自動に納品書に反映され印刷したいと思います。

全くの素人でチャレンジしているので説明もうまくできませんがどうぞよろしくお願い致します。

補足日時:2005/07/21 23:55
    • good
    • 0

単純に印刷するにはPrintOutメソッドを使います。



Worksheets("納品書1").PrintOut

複数のシートなら、

Sheets(Array("納品書1", "納品書2", "…")).PrintOut

とか。
もちろん「すべてのシート」だとか、あるフォルダの中のファイルをすべて、順番に開いていって印刷、ということも可能です。
そういう場合には、For 文などで必要な分だけ同じことを繰り返します。これがループです。
    • good
    • 0
この回答へのお礼

早速ご回答いただきましてありがとうございました。
参考にさせていただきたいと思います。

お礼日時:2005/07/22 00:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています