Ms access 访问问题:如何通过VBA代码设置访问报告纸张大小A3

Ms access 访问问题:如何通过VBA代码设置访问报告纸张大小A3,ms-access,ms-access-2010,Ms Access,Ms Access 2010,每当用户通过VBA打印access报告时,我想将其纸张大小永久设置为A3 密码 为此,我写了这段代码,我在网上找到了这段代码 Option Compare Database Type gtypStr_DEVMODE RGB As String * 94 End Type Type gType_DEVMODE strDeviceName As String * 32 intSpecVersion As Integer intDriverVersion As In

每当用户通过VBA打印access报告时,我想将其纸张大小永久设置为A3 密码 为此,我写了这段代码,我在网上找到了这段代码

Option Compare Database

Type gtypStr_DEVMODE
    RGB As String * 94
End Type

Type gType_DEVMODE
    strDeviceName As String * 32
    intSpecVersion As Integer
    intDriverVersion As Integer
    intSize As Integer
    intDriverExtra As Integer
    lngFields As Long
    intOrientation As Integer
    intPaperSize As Integer
    intPaperLength As Integer
    intPaperWidth As Integer
    intScale As Integer
    intCopies As Integer
    intDefaultSource As Integer
    intPrintQuality As Integer
    intColor As Integer

    intDuplex As Integer
    intResolution As Integer
    intTTOption As Integer
    intCollate As Integer
    strFormName As String * 32
    lngPad As Long
    lngBits As Long
    lngPW As Long
    lngPH As Long
    lngDFI As Long
    lngDFr As Long
End Type

Sub SetToA3(pReport As String)

    Dim LDevString As gtypStr_DEVMODE
    Dim LDM As gType_DEVMODE
    Dim LDevModeExtra As String
    Dim LRpt As Report

    On Error GoTo Err_Execute

    'Open report in Design view
    DoCmd.OpenReport pReport, acDesign
    Set LRpt = Reports(pReport)

    'Change paper size to legal
    If Not IsNull(LRpt.PrtDevMode) Then

        LDevModeExtra = LRpt.PrtDevMode
        LDevString.RGB = LDevModeExtra
        LSet LDM = LDevString

        '5=legal, 1=standard
        LDM.intPaperSize = 256
        LSet LDevString = LDM
        Mid(LDevModeExtra, 1, 94) = LDevString.RGB
        LRpt.PrtDevMode = LDevModeExtra

    End If

    'Save report changes (suppress system messages temporarily)
    DoCmd.SetWarnings False
    DoCmd.Save acReport, pReport
    DoCmd.Close acReport, pReport
    DoCmd.SetWarnings True

    Exit Sub

Err_Execute:
    MsgBox "Changing paper size to legal failed."
End Sub
但它根本不起作用,也就是说,当我调用SettoA3过程时,什么都没有发生


为什么不呢?

嗯。。。我不相信你自己写的代码(一个链接到你发现它会有帮助的地方,我找到了大约20个引用),但你可能想把
LDM.intPaperSize=256
改为
LDM.intPaperSize=acPRPSA3


我发现这个(它隐藏在AcPrintPaperSize的下拉列表中

是的,这是真的,我没有写这段代码,我是在网上使用的。代码正常与否access 2010中有一个表单,其中有一个pdf图标,每当用户单击该图标时,access报告都会自动以pdf格式打开。问题是内容被分成两页。因此我转到了p。)打印priview并将报告大小设置为A3。然后再次执行相同操作,但这次报告在一个页面中显示良好。它在我的计算机上运行良好,但我在另一台计算机上检查它,它仍然显示为两个页面。因此,我想在单击pdf图标时打开报告,并通过VBA将报告的纸张大小永久设置为A3coding.plz在这个场景中我做什么?使用代码-这取决于你在哪里,你做什么。仅仅因为它在互联网上并不意味着它是免费的。我的观点是,链接到源代码可能会帮助我们帮助你更好地理解它。我不确定如何做你想做的事情。事实上,这可能是不可能的(或非常不切实际),由于计算机之间的配置差异。这是一种古老的PrntMps控制打印机的方法,可追溯到Access 2(可能更早)。如果您从2002年开始使用任何版本的Access,现在您有了一个打印机对象,使这一过程变得更为简单(尽管仍然没有它应有的那么简单).我自己不使用它,因此无法提供代码,但您应该查看帮助文件以开始使用。