Microsoft Access 掲示板

レコードの複製

2 コメント
views
4 フォロー

お世話になります。初心者の為分かりづらかったらすいません。
レコードの複製方法を知りたいです。

デザインソフト(Illustrator)でシールを自動作成するのに必要な、
CSVファイルを作る為のAccessデータベースを作りたいと思っています。
(最終的に必要なのはCSVファイルです)

品番、カラー、サイズ が入ったシールをA4の1シートあたり30面付けで印刷するので、
品番1,カラー1,サイズ1,品番2,カラー2,サイズ2,・・・・・・・・・サイズ30 までで改行された
csvファイルを作りたいです。

品番、カラー、サイズ毎に必要な枚数はバラバラなので
品番、カラー、サイズ、枚数を入力したらその枚数分そのレコードが複製される仕組みにしたいです。

そのすべてをつなげて30ずつで改行する仕組みにしたいのですが、、、

これはマクロでできるようなものでしょうか?
ネット上にあるVBAをコピーして使用したことはあるのですが、
自分で書いたことはありません。。。

k35
作成: 2022/11/08 (火) 17:45:36
通報 ...
1
hiroton 2022/11/09 (水) 09:43:38 70abe@f966d

マクロ駆使してできないこともないんでしょうけど、VBA覚えるよりよっぽど難しい気がします

Private Sub csv出力()
  Dim FileNumber As Long
  Dim db As Database
  Dim rs As Recordset
  
  FileNumber = FreeFile
  Open "C:\データ\印刷.csv" For Output As #FileNumber
  Set db = CurrentDb
  Set rs = db.OpenRecordset("T発行一覧")
  
  Dim 枚数 As Long
  Dim 出力カウント As Long
  出力カウント = 0
  
  With rs
    '//レコード分繰り返しスタート
    Do Until .EOF

      '//枚数分の繰り返しスタート
      For 枚数 = 1 To !枚数
        '//改行無しで出力
        Print #FileNumber, !品番 & "," & !カラー & "," & !サイズ & ",";  
        
        '//出力数計算して改行出力
        出力カウント = 出力カウント + 1
        If 出力カウント = 30 Then
          '//改行だけ出力
          Print #FileNumber,

          出力カウント = 0 '//カウントリセット
        End If

      Next '//↑ここまで枚数分出力の繰り返し処理

      .MoveNext

    Loop '//↑ここまでレコード分繰り返し処理

    .Close
  End With
  Close #FileNumber
End Sub

そのすべてをつなげて30ずつで改行する仕組み

そのまんま記述するだけですね

2
k35 2022/11/09 (水) 14:48:48 修正

hiroton様
何日考えても分からなくてずっと悩んでいたのが一瞬で解決して、めちゃくちゃ感動しました。
今は見てもよくわからないのですが、
何とか自分でも少しはこういうのが書けるようになるように勉強します。
本当にありがとうございました。