【发布时间】:2022-06-24 09:14:58
【问题描述】:
我一直在努力让我的 VBA 工作,但我不知所措,因为我对使用 VBA 或一般编码非常陌生。
我所拥有的基本上是一个导航主窗体,它使用选项卡打开不同的窗体以便于访问。在其中一个子表单上,有一个按钮应该用作“SaveAsPDF”选项。它基本上应该通过打开一个要保存它的文件夹来工作,并将报告版本作为 pdf 导出到该位置。奇怪的是,当您打开实际表单而不是在导航菜单中打开表单时,它可以完美运行,所以我现在不知所措。
如果有人能提供帮助,我们将不胜感激,您将从地板上节省大量头发。我得到的是下面的
Private Sub SaveAsPDF_Click()
Dim fd As FileDialog
On Error goto ErrorHandler
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
.InitialFileName = MAFNO & ".pdf"
End With
If fd.Show Then
DoCmd.OutputTo acOutputReport, "RptMAFPrint", acFormatPDF, _
fd.SelectedItems(1), True
End If
Exit sub
ErrorHandler:
Msgbox "An Error occurred, please try again", vbinformation, "Could not save document"
Exit sub
End Sub
就当您打开实际表单时它自行运行而言,它可以完美运行并且没有出现任何错误,但是当从导航菜单选项卡打开它时,它会立即出现错误并尝试保存整个工作簿。 以下错误 https://imgur.com/a/rSynDic
【问题讨论】:
-
错误信息应以文本形式提供,而不仅仅是难以阅读的图像(如本例中)。 “尝试保存整个工作簿”是什么意思 - 什么工作簿? FrmMAF是主要形式吗?这个提示是来自报告吗?如果不是主表单并且是子表单,则当该表单用作子表单时,对该表单的引用将有所不同。这将导致报表中的引用在找不到表单时触发弹出输入提示。
-
是的,正如我在问题中所说,数据库使用导航表单并使用选项卡,当您循环浏览选项卡时,它将打开其他表单。但是,当您自己打开 FrmMAF 时,SaveAs 按钮可以正常工作。目前我如何像上面那样设置它,当你打开 FrmMAF 然后你打开报告版本时,它将打开记录所在的相同 ID 号。因此,如果您在记录 1 [ID 1] 上打开了 FrmMAF,然后打开报告版本 (RptMAF),它将打开到 ID 1 的记录
-
嗯,表单后面的查询有一个表单值参数。当表单被加载时,查询可以获得它的值,但是当表单关闭时,查询正在通过弹出窗口(手动输入)查找它。
-
当我说“保存工作簿”时,那是我的错误,它是在我在这里发布之前这样做的,因为这是在我更改 Rpt 版本的工作方式之前它会尝试做的事情。但错误是它正在寻找 [ID] 的参数字段,如下所示,带有搜索框 Forms!FrmMAF!ID 请输入值 = ___ 从导航表单打开时,我需要以不同的方式使报告工作吗或者其他的东西?因为只要打开 FrmMAF 并点击 SaveAs,它就可以正常工作。它贯穿一切都很好并且没有问题,但不是来自导航表单
-
以隐藏模式打开表单,导出完成后关闭。或者找到另一种方式将参数传递给查询。