• ベストアンサー

Accessの宛名ラベルウィザードでレコードを縦に並べて印刷したい

Accessの宛名ラベルウィザードでレコードを縦に並べて印刷したいのですがどうすればいいでしょうか? 横並びではなく縦並びにしたいのです。 例えば横4列×縦6列のラベルがあったとして(1ページに24個のラベル)、全部で10ページあったとしたら1列目に1ページから10ページまでのレコードを順番に並べて次に2列目に並べて印刷できるようにしたいのです。 うまく伝えることができたかな…。 よろしくお願いします。

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

  • ベストアンサー
  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.5

すいません。 判定文を変更していただけますでしょうか? (-1を右辺に&等号をはずしてください。)  If j * lngOffset + i > lngCount - 1 Then

taru_thunder
質問者

お礼

おおおおお~!! 完璧です!! ありがとうございます!!! 本当に助かりました!!! (^^)v

その他の回答 (4)

  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.4

>「ユーザ定義型は定義されていません」と出てしまいます。 ・フォームのデザインを開き ・[表示]-[コード]でコードを表示し ・[ツール]-[参照設定]を確認し、 (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

taru_thunder
質問者

お礼

おおお~~!! できました!! 思い描いているように並びました!! ありがとうございます!!! 明日さっそく仕事場でやってきます^^ 助かりました!! ありがとうございました^^

taru_thunder
質問者

補足

今日さっそく仕事場でやってきました^^ ですが、最後のページの最後の行のあたりが少し変なのです。ソートがかかっていないのです。 最後の行と手前の1行だけですので前に比べると随分ラクになり助かりました^^ もし、何かアドバイスがありましたらお教え願えませんでしょうか? たびたびすみません。

  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.3

>しかし私はVB知らないのです…(>ロ<;) VBA使うしか手が無いと思います‥(+o+) (1)元になるテーブルに[Number]というフィールドを追加する。(数値) (2)フォームのデザインでボタンを配置する。 (3)ボタンのプロパティーで"クリック時"に#2のプログラムを貼り付ける。 (4)参照設定に"Microsoft DAO‥"を追加する。 という手順ですが、どうしましょう‥。

taru_thunder
質問者

お礼

お返事ありがとうございます! 手順通りにやってみたのですが MyDB As Database のところでエラーが出てしまいます。 「ユーザ定義型は定義されていません」 と出てしまいます。 それと宛名ラベルを印刷する際は (オブジェクトっていうのかな…)テーブルとクエリとレポートしか使っていないのです。 それでも出来ますでしょうか? たびたびすみません…><

  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.2

テーブルに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

taru_thunder
質問者

お礼

お返事ありがとうございます。 しかし私はVB知らないのです…(>ロ<;)

  • o23
  • ベストアンサー率36% (64/175)
回答No.1

こんばんは!ちょっとわかりにくいので補足してください。 例えば横3列×縦2列のラベルがあったとして(1ページに6個のラベル)、全部で2ページあったとしたら --- 1P ABC DEF 2P GHI JKL ---- 1P ACE BDF 2P GIK HJL ---- 1P ACE GIK 2P BDF HJL とか、どうしたいのでしょう?

taru_thunder
質問者

補足

わかりにくくてすみません。 1P目は AIQY BJRZ CKS DLT 2P目は EMU FNV GOW HPX というふうに印刷したいのです。