- ベストアンサー
Accessの宛名ラベルウィザードでレコードを縦に並べて印刷したい
Accessの宛名ラベルウィザードでレコードを縦に並べて印刷したいのですがどうすればいいでしょうか? 横並びではなく縦並びにしたいのです。 例えば横4列×縦6列のラベルがあったとして(1ページに24個のラベル)、全部で10ページあったとしたら1列目に1ページから10ページまでのレコードを順番に並べて次に2列目に並べて印刷できるようにしたいのです。 うまく伝えることができたかな…。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
すいません。 判定文を変更していただけますでしょうか? (-1を右辺に&等号をはずしてください。) If j * lngOffset + i > lngCount - 1 Then
その他の回答 (4)
- palmmy
- ベストアンサー率38% (841/2169)
>「ユーザ定義型は定義されていません」と出てしまいます。 ・フォームのデザインを開き ・[表示]-[コード]でコードを表示し ・[ツール]-[参照設定]を確認し、 (1)Visual Bsic For Application (2)Microsoft Access XX Object Library (3)Microsoft DAO XX Object Library (4)‥ となっているか確認してください。(XXはバージョンで違う) DAOが3番目に無いとエラーが出ます。 >テーブルとクエリとレポートしか使っていないのです。 それでも出来ますでしょうか? 出来ると思います。 ・クエリにもテーブルに追加した[Number]フィールドを追加してください。 ・Set MyTBL = MyDB.OpenRecordset("テーブル1", dbOpenDynaset) のテーブル1をクエリーの名前に変更してください。 ・レポートは[Number]順でソートしてください。 一部バグがありましたので修正しました。 Dim i As Integer Dim j As Integer Dim MyDB As Database Dim MyTBL As Recordset Dim lngCount As Long Dim lngOffset As Long Set MyDB = CurrentDb Set MyTBL = MyDB.OpenRecordset("クエリ1", dbOpenDynaset) i = 0 j = 0 MyTBL.MoveLast lngCount = MyTBL.RecordCount lngOffset = 4 MyTBL.MoveFirst Do Until MyTBL.EOF MyTBL.Edit MyTBL![Number] = i + j * lngOffset MyTBL.Update j = j + 1 If j * lngOffset + i - 1 >= lngCount Then i = i + 1 j = 0 End If MyTBL.MoveNext Loop
お礼
おおお~~!! できました!! 思い描いているように並びました!! ありがとうございます!!! 明日さっそく仕事場でやってきます^^ 助かりました!! ありがとうございました^^
補足
今日さっそく仕事場でやってきました^^ ですが、最後のページの最後の行のあたりが少し変なのです。ソートがかかっていないのです。 最後の行と手前の1行だけですので前に比べると随分ラクになり助かりました^^ もし、何かアドバイスがありましたらお教え願えませんでしょうか? たびたびすみません。
- palmmy
- ベストアンサー率38% (841/2169)
>しかし私はVB知らないのです…(>ロ<;) VBA使うしか手が無いと思います‥(+o+) (1)元になるテーブルに[Number]というフィールドを追加する。(数値) (2)フォームのデザインでボタンを配置する。 (3)ボタンのプロパティーで"クリック時"に#2のプログラムを貼り付ける。 (4)参照設定に"Microsoft DAO‥"を追加する。 という手順ですが、どうしましょう‥。
お礼
お返事ありがとうございます! 手順通りにやってみたのですが MyDB As Database のところでエラーが出てしまいます。 「ユーザ定義型は定義されていません」 と出てしまいます。 それと宛名ラベルを印刷する際は (オブジェクトっていうのかな…)テーブルとクエリとレポートしか使っていないのです。 それでも出来ますでしょうか? たびたびすみません…><
- palmmy
- ベストアンサー率38% (841/2169)
テーブルに1つダミーのフィールドを作り、印刷前にVBAで番号を振って、印刷はその番号順にすればいかがでしょう。 ◎4列でテーブル1にデータがある場合 Dim i As Integer Dim j As Integer Dim MyDB As Database Dim MyTBL As Recordset Dim lngCount As Long Dim lngOffset As Long Set MyDB = CurrentDb Set MyTBL = MyDB.OpenRecordset("テーブル1", dbOpenDynaset) i = 0 j = 0 MyTBL.MoveLast lngCount = MyTBL.RecordCount lngOffset = Int(lngCount / 4 + 0.5) MyTBL.MoveFirst Do Until MyTBL.EOF MyTBL.Edit MyTBL![Number] = i + j * lngOffset MyTBL.Update j = j + 1 If j = 4 Then i = i + 1 j = 0 End If Loop
お礼
お返事ありがとうございます。 しかし私はVB知らないのです…(>ロ<;)
- o23
- ベストアンサー率36% (64/175)
こんばんは!ちょっとわかりにくいので補足してください。 例えば横3列×縦2列のラベルがあったとして(1ページに6個のラベル)、全部で2ページあったとしたら --- 1P ABC DEF 2P GHI JKL ---- 1P ACE BDF 2P GIK HJL ---- 1P ACE GIK 2P BDF HJL とか、どうしたいのでしょう?
補足
わかりにくくてすみません。 1P目は AIQY BJRZ CKS DLT 2P目は EMU FNV GOW HPX というふうに印刷したいのです。
お礼
おおおおお~!! 完璧です!! ありがとうございます!!! 本当に助かりました!!! (^^)v