Microsoft Access 掲示板

印刷するデーターをCSVにも吐き出したい

2 コメント
views
4 フォロー

下記のところで、印刷に使ったデータをCSVにも吐き出す方法を教えていただきたいです。

まるで初心者なので、出来ればコードも併せてお願い致します。

strWhere = "([請求締日]='" & Me![締日] & "')" &
" AND ([請求先カナ] BETWEEN '" & Me![開始請求先] & "' AND '" & Me![終了請求先] & "')" &

" AND ([施工者コード] BETWEEN '" & Me![開始施工者] & "' AND '" & Me![終了施工者] & "')" &
" AND ([工事コード] BETWEEN '" & Me![開始工事] & "' AND '" & Me![終了工事] & "')" &

" AND ([試験工場コード] BETWEEN '" & Me![開始試験] & "' AND '" & Me![終了試験] & "')"

If in_kbn = "w" Then

If PrinterGRP.Value = 1 Then
DoCmd.OpenReport "R_請求書10", , , strWhere
ElseIf PrinterGRP.Value = 2 Then
DoCmd.OpenReport "R_請求書控", , , strWhere

  End If
Else

If PrinterGRP.Value = 1 Then
DoCmd.OpenReport "R_請求書10", acPreview, , strWhere 'プレビュー
ElseIf PrinterGRP.Value = 2 Then
DoCmd.OpenReport "R_請求書控", acPreview, , strWhere

End If

End If
以上

どこにCSV吐き出し構文を入れればいいか分かりません宜しくお願い致します。

カルナ
作成: 2022/01/31 (月) 08:20:27
通報 ...
1
hiroton 2022/01/31 (月) 14:13:20 53823@f966d

この掲示板でコードを表記する場合はコードブロックの記述を使うとわかりやすくなります

strWhere = "([請求締日]='" & Me![締日] & "')" & _
" AND ([請求先カナ] BETWEEN '" & Me![開始請求先] & "' AND '" & Me![終了請求先] & "')" & _
" AND ([施工者コード] BETWEEN '" & Me![開始施工者] & "' AND '" & Me![終了施工者] & "')" & _
" AND ([工事コード] BETWEEN '" & Me![開始工事] & "' AND '" & Me![終了工事] & "')" & _
" AND ([試験工場コード] BETWEEN '" & Me![開始試験] & "' AND '" & Me![終了試験] & "')"

If in_kbn = "w" Then

If PrinterGRP.Value = 1 Then
DoCmd.OpenReport "R_請求書10", , , strWhere

'//R_請求書10を印刷したときならここ

ElseIf PrinterGRP.Value = 2 Then

'//R_請求書控を印刷したときならここ

DoCmd.OpenReport "R_請求書控", , , strWhere

  End If

'//どちらでもいいので印刷したときならここ

Else

If PrinterGRP.Value = 1 Then
DoCmd.OpenReport "R_請求書10", acPreview, , strWhere 'プレビュー
ElseIf PrinterGRP.Value = 2 Then
DoCmd.OpenReport "R_請求書控", acPreview, , strWhere

End If

End If

また、コードの書き方を工夫すると理解しやすくなります

strwhere = "(省略)"

'//印刷・プレビューに使うレポートを決める
Dim reportName As String
Select Case PrinterGRP.Value
Case 1
    reportName = "R_請求書10"
Case 2
    reportName = "R_請求書控"
End Select

'//印刷またはプレビューを行う
If in_kbn = "w" Then
    DoCmd.OpenReport reportName, , , strwhere
    '//印刷したときだけCSV出力をするならここにコードを追加する
Else
    DoCmd.OpenReport reportName, acPreview, , strwhere 'プレビュー
End If

CSV出力の方法はいくつかあります。メリット・デメリット(使える・使えない)があるので組み込みながら調整が必要ですが、一番簡単と思われるのはTransferTextを使った方法でしょう

strwhere = "(省略)"

'//出力設定
Dim reportName As String
Dim queryName As String
Select Case PrinterGRP.Value
Case 1
    reportName = "R_請求書10"
    queryName = "(R_請求書10に対応したクエリ)"
Case 2
    reportName = "R_請求書控"
    queryName = "(R_請求書控に対応したクエリ)"
End Select

'//CSV出力先設定
Dim filePath As String
filePath = "C:\foo.csv"

'//処理実行
If in_kbn = "w" Then
    '//印刷
    DoCmd.OpenReport reportName, , , strwhere
    '//CSV出力
    DoCmd.TransferText acExportDelim, , queryName, filePath
Else
    '//プレビュー
    DoCmd.OpenReport reportName, acPreview, , strwhere
End If

DoCmd.TransferText メソッド (Access)

事前に出力用のクエリを作成しておく必要があります。(上記コードでは(R_請求書10に対応したクエリ)と(R_請求書控に対応したクエリ)。実際にはシステムに合わせたわかりやすい名前にします)

2
カルナ 2022/02/01 (火) 08:11:53 03236@cb203

ありがとうございます。
大変勉強になります。
ご指導いただいた内容に沿って頑張って見ます。