一个访问问题:如何通过 VBA 代码设置访问报告纸张大小 A3 [英] An Access Problem:How to Set Access Report paper size A3 through VBA code
问题描述
每当用户通过 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屋!