Ms access VBA中的Access 2007多报表配置
我目前正在编译一些代码,以便使用两个不同的报告执行以下操作:Ms access VBA中的Access 2007多报表配置,ms-access,printing,vba,ms-access-2007,Ms Access,Printing,Vba,Ms Access 2007,我目前正在编译一些代码,以便使用两个不同的报告执行以下操作: 最终用户输入报告参数范围的第一个和最后一个作业,然后单击按钮 开始作业存储在本地,计算第一个和最后一个之间的差值,并启动Do…Loop语句(带计数器),直到计数器等于差值 在循环过程中,作业参数增加1(与计数器相同),并打印报告 如果我已经把你弄糊涂了,下面是一些示例代码,可以直观地解释我目前正在做的事情: Dim NetJobVar As String Dim counter As Long NetJobVar = Me.ToJ
- 最终用户输入报告参数范围的第一个和最后一个作业,然后单击按钮
- 开始作业存储在本地,计算第一个和最后一个之间的差值,并启动Do…Loop语句(带计数器),直到计数器等于差值李>
Dim NetJobVar As String
Dim counter As Long
NetJobVar = Me.ToJob - Me.FromJob
counter = 0
DoCmd.SetWarnings False
'Query to add first job parameter to local table
Me.JobStatus.Visible = True
Do
Me.JobStatus.Caption = "Printing " & Me.FromJob + counter & "..."
'Insert report code here
'Query to add 1 onto Job stored in local table
counter = counter + 1
Loop Until counter = NetJobVar + 1
Me.JobStatus.Visible = False
我已经把一切都计划好了除了这个。。。我希望在Do…Loop语句中实际打印报表之前,先显示两个不同的打印机配置窗口(例如,强制报表在VBA/模块中打印)。否则,可能会导致无数的提示和非常不满意的最终用户
我之所以需要两个配置提示,是因为我们将作业打印到两个不同的纸盘(两种不同颜色的纸张)
我偶然发现了一些东西。。。这些都有帮助,但还没有达到我想要达到的程度
让我知道你们的想法 考虑绕过任何打印配置对话框的需要。相反,使用VBA的对象自动选择打印机设置,包括
方向
、纸张大小
、和纸盒
(用于纸盘)等
以某种方式将下面的脚本集成到您的循环中。我提供了一份详尽的纸盒
常数列表,供您决定将哪批报告发送到哪一个托盘以存放彩色纸张。若将相同的报告打印到不同的纸盘,只需添加行以选择新的纸盒,然后再次打印报告
Dim rpt As Access.Report
'Open report with any filters
DoCmd.OpenReport "JobsReport", acPreview, , "Job=" & Me.FromJob + counter
Set rpt = Reports("JobsReport")
'Set the default printer's orientation to portrait/landscape
rpt.Printer.Orientation = acPRORPortrait
'Set the default printer's paper size to letter/legal/tabloid/A3/A4
rpt.Printer.PaperSize = acPRPSLetter
'FIRST TRAY ----------------------------------------------
'Set the default printer's paper bin
rpt.Printer.PaperBin = acPRBNUpper
'Print Report
DoCmd.OpenReport "JobsReport"
'SECOND TRAY ----------------------------------------------
'Set the default printer's paper bin
rpt.Printer.PaperBin = acPRBNLower
'Print Report
DoCmd.OpenReport "JobsReport"
'Constants for PaperBin
'acPRBNUpper = 1 ' Use paper from the upper bin
'acPRBNLower = 2 ' Use paper from the lower bin
'acPRBNMiddle = 3 ' Use paper from the middle bin
'acPRBNManual = 4 ' Wait for manual insertion of each sheet of paper
'acPRBNEnvelope = 5 'Use envelopes from the envelope feeder
'acPRBNEnvManual = 6 ' Use envelopes from the envelope feeder, but wait for manual insertion
'acPRBNAuto = 7 '(Default) Use paper from the current default bin
'acPRBNTractor = 8 ' Use paper from the tractor feeder
'acPRBNSmallFmt = 9 ' Use paper from the small paper feeder
'acPRBNLargeFmt = 10 ' Use paper from the large paper bin
'acPRBNLargeCapacity = 11 ' Use paper from the large capacity feeder
'acPRBNCassette = 14 'Use paper from the attached cassette cartridge
'acPRBNFormSource = 15 ' Use paper from the forms bin
Set rpt = Nothing
需要哪两种配置?哪些报告与哪个配置相匹配?@Parfait我需要打印配置屏幕(在报告上选择“打印”时,在报告上选择Ctrl+P,
docmd.runcommand accmdprint
在VBA中打开报告后,等等)两次,基本上是这样。我是使用本机访问打印功能还是创建自己的打印功能不是问题。@Parfait另外,为了进一步说明,我将在一个访问报告上运行两个打印配置屏幕,但通过Do…Loop语句运行同一报告n次。这可能行得通!将您的概念构建到我的循环语句中。。。我是否可以通过打印机对象为一个纸盘配置报告,强制打印,为下一个纸盘配置,再次强制打印,然后为下一个作业重复循环?此外,我还需要最终用户提供一些纸盘位置的输入,因为每个打印机打印的彩色纸盘不同。正如我在回答中提到的,只需添加另一行即可更改纸盒
常数并再次打印。请参见编辑,其中我表示第一个和第二个托盘。此外,我还添加了PaperBin
常量值。考虑添加一个COMBOX框(隐藏值,但显示bin描述)以供用户在第一个和第二个托盘打印报告之前选择,并将值传递到<代码> Pasbin < /Cord>表达式中。谢谢您的帮助,PaFaIT!很好!