Accessで作る住所録8~ラベル印刷のVBAコード

Pocket

ラベル用紙に同一の取引先を一枚に全て印刷するにはひと工夫が必要です。

最初に簡単な印刷指定用のフォームを作ります。
フォームウィザードを使い、表形式で作り、コマンドボタンを配置します。
2803051

このコマンドボタンに次のVBAコードを記述します。

Private Sub コマンド5_Click()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim i As Integer

Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset

rs.Open “ラベル”, cnn, adOpenKeyset, adLockOptimistic

On Error Resume Next
rs.MoveFirst
Do Until rs.EOF
rs.Delete
rs.MoveNext
Loop
On Error GoTo 0

For i = 1 To 12
rs.AddNew
rs!ID = i
rs!〒 = DLookup(“〒”, “顧客”, “顧客CD=” & Me!顧客CD & “”)
rs!住所 = DLookup(“住所”, “顧客”, “顧客CD=” & Me!顧客CD & “”)
rs!会社名 = DLookup(“会社名”, “顧客”, “顧客CD=” & Me!顧客CD & “”)
rs!氏名 = DLookup(“氏名”, “顧客”, “顧客CD=” & Me!顧客CD & “”)
rs!敬称 = DLookup(“敬称”, “顧客”, “顧客CD=” & Me!顧客CD & “”)
rs.Update
Next i
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
DoCmd.OpenReport “ラベル顧客一括”, acViewPreview
End Sub

簡単な流れは、最初に印刷用のテーブルのデータを全て削除します。

次に印刷するデータを印刷用のテーブルに貯めます。
今回は12回繰り返すので、
For i = 1 To 12
データを貯める処理
Next i
というNext関数を使います。
データはDlookup関数を使います。フォームの顧客CDから

住所
会社名
氏名
敬称
を参照し、テーブルのデータに格納します。

2803052
毎回印刷するデータがこのように前回作ったテーブルにたまります。
コマンドボタンを押すたびに一旦テーブルデータの全削除、
その後データの追加が行われます。

あとはこのテーブルのデータをラベルレポートの形式で印刷します。
2802261
普通に印刷しようとすると、全得意先OR指定した得意先が1枚ずつ印刷されますが、
まとめて一つを印刷しようとすると、こういった処理が必要になります。

====================================
またまたブログの更新が途絶えてしまいました。
今回は仕事・・ではなく内々の勉強会の発表の内容を詰めるのに時間を
かけてしまいました。その分いい発表ができたのではないかと
思います。

本日も最後までお読み頂きありがとうございます。