- 締切済み
ACCESSレポートをPDFに出力したい
ACCESSでレポートを作成して、下記のVBAで管理番号(ID)別にPDFファイルで保存したいと思っています。保存名はIDにしたいと思っています。 管理番号ごとに出力する部分のコードが分からずに困っています。どなたかご教授頂けないでしょうか?よろしくお願いします。 Private Sub コマンド9_Click() Const TBL_NAME = "T_住所録" Const RPT_NAME = "R_住所録" Const PDF_PATH = "C:\Users\TEST\" Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "SELECT DISTINCT ID FROM T_住所録", CurrentProject.Connection, adOpenStatic, adLockReadOnly Do Until rs.EOF pdfName = rs!ID DoCmd.OpenReport RPT_NAME, acViewPreview, , "ID = '" & rs("ID") & "'" DoCmd.OutputTo acOutputReport, RPT_NAME, acFormatPDF, PDF_PATH & pdfName & ".pdf" DoCmd.Close rs.MoveNext Loop End Sub 実行すると「出力データを指定したファイルに保存できません」とメッセージが出ます。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nicotinism
- ベストアンサー率70% (1019/1452)
そちらの環境が不明なので 当方の場合です。 案1 Const PDF_PATH = "C:\Users\TEST\" を自身のアカウント名のフォルダのサブフォルダにする 例 Const PDF_PATH = "C:\Users\Nicotinims\test\" これならUACの影響を受けません。 どのフォルダがUACのチェック対象かは不明です。 上記での保存は確認しています。適当なところを探してみてください。 案2 C:\Users\TEST\ のアクセス許可を変更する。 Usersグループに、変更・書き込みの許可を与えます。 案3 UACのレベルを一番下まで下げる。(無効にする) (これだけ再起動が必要なので試していません) 案4 Accessを「管理者として実行」する。 案1が一番妥当ではないですかね~。
- nicotinism
- ベストアンサー率70% (1019/1452)
UACか何かの関係かと思われます。 >Const PDF_PATH = "C:\Users\TEST\" のTESTがアカウント名だった場合は正常に出力されましたが そうでない場合には 当方(Windows7 Pro & Access2010)では 実行時エラー 2501 OutputTo アクションの実行は取り消されました。 になりました。 IDはテキスト型ですよね。
補足
回答ありがとうございます。 TESTはフォルダ名です。IDはテキスト型にしてあるのですが。