更改报告中的打印机设置

问题描述 投票:1回答:1

当我更新我的Access应用程序时,我需要更改每台PC上的打印机设置 - 匹配附加的labelprinters名称,使用每台打印机上的特定预定义标签,然后调整边距。 我想自动化这个过程。但我在获取报告以保存设置时遇到问题。

我们的想法是将打印机设置导出到表(完成),更新应用程序,然后读取每个报告的“旧”设置并将其保存为更新的一部分。

问题是,我无法让Access 2010保存设置。

有任何想法吗?

Dim rpt As Access.Report
Dim rstUpdRptSettings As ADODB.Recordset
Dim NameOfPrinter As String

Set rstUpdRptSettings = New ADODB.Recordset

rstUpdRptSettings.Open "Select * From tblUpdRptSettings", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

Do While Not rstUpdRptSettings.EOF
    DoCmd.OpenReport ReportName:=rstUpdRptSettings!ReportName, View:=acViewDesign, WindowMode:=acHidden
    Set rpt = Reports(rstUpdRptSettings!ReportName)
    NameOfPrinter = rstUpdRptSettings!PrinterName

    With rpt
        .Printer = Application.Printers(NameOfPrinter)
        .Printer.TopMargin = rstUpdRptSettings!TopMargin
        .Printer.BottomMargin = rstUpdRptSettings!BottomMargin
        .Printer.LeftMargin = rstUpdRptSettings!LeftMargin
        .Printer.RightMargin = rstUpdRptSettings!RightMargin
        .Printer.PaperSize = rstUpdRptSettings!PaperSize
    End With
    DoCmd.Close acReport, rpt.Name, acSaveYes
    rstUpdRptSettings.MoveNext
Loop

运行代码不会更改任何设置 - 也不会更改打印机名称,边距或PaperSize。

ms-access access-vba ms-access-2010
1个回答
0
投票

谢谢你的评论。

我现在通过将其添加到代码中解决了这个问题:

If .DefaultView = 0 Then
    .DefaultView = 1
Else
    .DefaultView = 0
End If
'Set it back
If .DefaultView = 0 Then
    .DefaultView = 1
Else
    .DefaultView = 0
End If

我在这里找到了解释和代码(感谢Daniel):https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8061fb4a-2e5f-4abe-a1ab-493c3d733e82/set-report-margins-using-vba?forum=accessdev

回答者:Daniel Pineault,2010-2016 Microsoft MVP专业支持:http://www.cardaconsultants.com MS Access技巧和代码示例:http://www.devhut.net

© www.soinside.com 2019 - 2024. All rights reserved.