開いているフォームのレポートを
名前を付けて保存ダイアログを使ってデスクトップにPDFで保存したいです。
見よう見真似で試しているのですが
キャンセルボタンをクリックしてもメッセージが出ず
ドキュメントにファイルが保存されてしまいます。
また、何も入力されていない時にボタンを押すと
ダイアログが開きなんらかのアクションの後に
実行時エラー’3075’が出るので
ダイアログが出る前にメッセージを出したいです。
(今のコードだと後から出ます)
よろしくお願いいたします。
Function GetFileName(OpenOrSaveFlg As Boolean, strFilter As String, _ strTitle As String, strDefaultPath As String) As String Dim wScriptHost As Object, strInitDir As String Dim returnValue As Integer Dim strFilePath As String strFilePath = strDefaultPath If strFilter = "" Then strFilter = "全てのファイル (*.*)|*.*" End If WizHook.Key = 51488399 'WIZHOOK有効 returnValue = WizHook.GetFileName( _ 0, "", strTitle, "", strFilePath, "", _ strFilter, _ 0, 0, 0, OpenOrSaveFlg _ ) WizHook.Key = 0 ' WizHook 無効 GetFileName = strFilePath End Function Private Sub コマンド55_Click() DoCmd.RunCommand acCmdSaveRecord Const cstrRptName As String = "受注票" On Error GoTo Err_Handler Dim strFileName As String Dim ExpFileName As String Set wScriptHost = CreateObject("WScript.Shell") strInitDir = wScriptHost.SpecialFolders("Desktop") ExpFileName = "受注票_" & Format(Now(), "yyyymmdd_hhnnss") strFileName = GetFileName(False, "PDFファイル (*.pdf)|*.pdf", "", ExpFileName & ".pdf") If Len(strFileName) = 0 Then MsgBox "キャンセルしました。" Else Echo False DoCmd.OpenReport "受注票", acViewPreview, , "受注ID=" & 受注ID DoCmd.OutputTo acOutputReport, "受注票", acFormatPDF, strFileName, False End If OpenAfterPublish = False Exit_Here: On Error Resume Next DoCmd.Close acReport, cstrRptName Echo True Exit Sub Err_Handler: If Err.Number = 3075 Then MsgBox "保存できるものがありません" & vbLf Else MsgBox "エラーが起こりました" & vbLf End If Resume Exit_Here: End Sub
strFilePath = strDefaultPath
が入っているため、キャンセルボタンをクリックしたときに保存してしまうのではないでしょうか?
returnValueの値を見て戻り値を変更すればいける気がします
回答1件
あなたの回答
tips
プレビュー