3

しばらく前にWebから次のVBAコードを入手しました。

Private Sub btnCreatePDF_Click()
    Dim MyPath As String
    Dim MyFilename As String
    MyPath = "D:\reports\"
        MyFilename = "KS1.pdf"
    'Open report preview and auto-save it as a PDF
        DoCmd.OpenReport "Rpt_KS1", acViewPreview
        DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, False 'Change false to true here to auto-open the saved PDF
    'Close the previewed report
        DoCmd.Close acReport, "Rpt_KS1"
End Sub

これは、MS Accessでレポートの単一のPDF(最大30ページを含む)を作成するためのものであり、必要なものに対して正常に機能します。ただし、レポートを30ページ程度に分割し、各ページのPDFを作成する必要があります。これをどのように行うことができるか考えていますか?レポートに「ユーザー名」が含まれているか、分割に役立つ場合は一意のIDを追加できます。

4

1 に答える 1

2

Docmd.OpenReport の 4 番目のパラメーター (WhereCondition) を使用します。WhereCondition を使用して、クエリに Where を追加するときとまったく同じように行います。ただし、Where という単語は含めないでください。これにより、WhereCondition に一致するレコードのみがレポートに表示されます。

一意の識別子のリストをある種のコレクションまたはレコードセットに取得してから、ループを実行します。この例では、それらが uniqueIds というコレクションに含まれていることを前提としており、ほぼ確実に何らかの変更が必要になります。

Dim MyPath As String
Dim MyFilename As String
MyPath = "D:\reports\"    
'Loop structure may vary depending on how you obtain values
For each uniqueId in uniqueIds
    MyFilename = "KS1" & uniqueId & ".pdf"
'Open report preview and auto-save it as a PDF
    DoCmd.OpenReport "Rpt_KS1", acViewPreview, , "uniqueField = " & uniqueID
    DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename, False
'Close the previewed report
    DoCmd.Close acReport, "Rpt_KS1"
Next uniqueId

厳密に言えば、ページごとに異なる PDF になるとは限りません。ただし、uniqueID ごとに異なる PDF が生成されます。これは、データによってはすべてのページである可能性があります。

于 2012-12-20T02:45:10.277 に答える