一个访问问题:如何通过 VBA 代码设置访问报告纸张大小 A3 [英] An Access Problem:How to Set Access Report paper size A3 through VBA code

查看:118
本文介绍了一个访问问题:如何通过 VBA 代码设置访问报告纸张大小 A3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to set access report paper size to A3 permanently whenever user print it through VBA code . For that I have written this code which I have found over net

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 过程时什么也没有发生.

But it doesn't work at all, i.e. when I call SettoA3 procedure nothing happen.

为什么不呢?

推荐答案

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

Well... I don't believe you wrote that code your self (a link to where you found it would have been helpful, I found about 20 references to it) but you probably want to change LDM.intPaperSize = 256 to LDM.intPaperSize = acPRPSA3.

我在 MS 的页面上找到了这个(它隐藏在 AcPrintPaperSize 的下拉列表中

I found this on MS's page (it's hidden in the dropdown for AcPrintPaperSize

这篇关于一个访问问题:如何通过 VBA 代码设置访问报告纸张大小 A3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆