「txt目次0~3」なら「0,1,2,3」の4段じゃないですか?
印刷時拡張を使って複数ページになるなら目次データの生成処理を初回の1回だけ処理するようにすればいいですね
それと、印刷時拡張かつ段組みとすると、30行ずつ3段目まで振り分けたらまた1段目に戻す必要がありますね
レポートフッター_Format
を次のように変更します
Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)
Static isExecuted As Boolean
Dim arr
Dim s
Const colCount = 3 '1ページの段数
Const rowCount = 30 '1ページの行数
Dim CNT As Long
Dim colName As String
If Not isExecuted Then
'並び替えのために配列にする
arr = Split(Data, vbCrLf)
'配列を並び替え
Call ArrayListSort(arr)
'段組みに振り分ける
CNT = 0
For Each s In arr
colName = "txt目次" & CNT \ rowCount Mod colCount
Me(colName) = Me(colName) & s & vbCrLf
CNT = CNT + 1
Next
isExecuted = True
End If
End Sub
通報 ...
それと、詳細セクションも複数ページにまたがることがあったりしますか?
ページ跨ぎが発生すると
詳細_Format
もその都度発生するので、data
に薬品名が重複して登録されます。こちらもページ跨ぎの場合はdata
にデータを追加しない様、制御処理を追加しておいたほうがいいかもしれません