| |
|
| |
Excel VBA Macro ・ 印刷 ・ FAQ
|
|
|
|
「請求書作成」のDBとピボットと請求書の関連付けは?
|
|
|
|
Question 14.6 印刷 |
|
 |
 |
|
|
はじめまして。
雑誌PCing2月号よりサンプルマクロ「請求書作成」をダウンロードしました。
その中でDBとピボットと請求書の関連付けが分かりません。 使い方を教えて下さい。
|
|
Answer |
Copyright (C) 1999.1.25 Yoshioh Nagai |
|
|
「関連付け」と言われると、あるシートと他のシートの間にリンクを張っているか、或いは、
他のシートを参照するような式を埋め込んでいるかどうかを、たずねて見えると思ってよいでしょうか?
そういう意味ならば、何もしていません。すべてマクロで処理しています。
マクロの骨組みを説明します。
1) マクロの変数を設定し、初期化する … ブック名、シート名、消費税率など
2) 請求書に印刷する日付を入力する … インプットボックスで入力要求
3) DBの範囲を調べてから、ピボットテーブルを作成する
4) ピボットテーブルから売上データを順に取り出して、請求書を印刷する
あなたは既に、サンプルマクロを見ましたか。DBからピボットテーブルを作る部分のマクロは、下記のようになっています。
1. Private Sub ピボットテーブルを作成する()
2. Sheets(ピボット).Cells.Clear 'すべてクリア
3. Sheets(データ).Select
4. 下端 = Range(Cells(1, 1), Cells(1, 1)).End(xlDown).Row '下端検出
5. Range("A2").Select
6. ソース = データ & "!R1C1:R" & 下端 & "C3"
7. テーブル先 = "[" & ブック名 & "]" & ピボット & "!R1C1"
8. テーブル名 = "請求先別売上"
9. ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
10. ソース, TableDestination:=テーブル先, TableName:=テーブル名
11. ActiveSheet.PivotTables(テーブル名).AddFields RowFields:="社名", _
12. ColumnFields:="内容"
13. ActiveSheet.PivotTables(テーブル名).PivotFields("売上").Orientation _
14. = xlDataField
15. End Sub
3〜4行目で、DBシートの下端行を検出しています。
6〜8行目は、ピボットテーブルに必要な変数をセットしています。(6行目はDBシートの範囲、
7行目はピボットテーブルを作るシート名など、8行目はピボットテーブルの名前)
9〜10行目、11〜12行目、13〜14行目がピボットテーブルを作るためのマクロです。
くわしい説明は、エクセルのヘルプで見れると思います。
次はピボットテーブルから請求書を作成する段階ですが、これもすべてマクロだけで処理しています。
1. Private Sub ピボットテーブルから売上データを取り出しながら請求書を印刷する()
2. 下端 = Sheets(ピボット).Range("B3").End(xlDown).Row '下端検出
3. 右端 = Sheets(ピボット).Range("B3").End(xlToRight).Column '右端検出
4. Sheets(用紙).Select
5. For 縦 = 3 To 下端 - 1 'ピボットテーブルの3行目〜最下行-1
6. Range("C22:J31").ClearContents '明細欄をクリア
7. Cells(11, 5) = Sheets(ピボット).Cells(縦, 1) '社名
8. 貼付行 = 22 '請求書用紙の金額欄の最上行
9. For 横 = 2 To 右端 - 1
10. Cells(貼付行, 4) = " " & Sheets(ピボット).Cells(2, 横) '内容
11. Cells(貼付行, 9) = " " & Sheets(ピボット).Cells(縦, 横) '売上
12. 貼付行 = 貼付行 + 1
13. Next
14. 小計 = Sheets(ピボット).Cells(縦, 右端) '横計
15. Cells(貼付行, 6) = "小 計"
16. Cells(貼付行, 9) = 小計 '小計
17. 消費税 = Application.Round(小計 * 消費税率 / 100, 0)
18. Cells(貼付行 + 1, 6) = "消費税"
19. Cells(貼付行 + 1, 9) = 消費税 '消費税
20. Cells(貼付行 + 2, 6) = "合 計"
21. Cells(貼付行 + 2, 9) = 小計 + 消費税 '合計
22. Cells(18, 5) = 小計 + 消費税 'ご請求額
23. ActiveWindow.SelectedSheets.PrintOut Copies:=1 '印刷
24. Next
25. End Sub
以下はマクロの、大きい流れだけ説明します。
5〜24行目の For〜Nextは、ピボットテーブルの3行目(=A社)から始めて、下端行-1行(=C社)に至るまで、1行ずつ反復処理します。
9〜18行目の For〜Nextは、ピボットテーブルのB列(=内容1)から右端列-1列(=内容3)に至るまで、内容名と金額を取り出して請求書用紙に写します。
17行目は、消費税金額を円未満を四捨五入して計算しています。
23行目で印刷します。
この他の各行のマクロの動作内容は、コメントを読んで理解してください。
|
|
|
|