Seitenformat via VBA einstellen
Veröffentlicht am 14.07.2004
Das Seitenformat eines Berichts kann über das Dialogfenster „Datei>Seiten einrichten“ getrennt für jeden Bericht angegeben werden. Mit Hilfe einer „Berichtseigenschaft“ können Sie diese Einstellungen auch von VBA aus vornehmen.
Hierbei spielt eine Datenstruktur namens DEVMODE eine wichtige Rolle, in der die Seitenoptionen durch einzelne Elemente repräsentiert werden. Die Struktur muss auf die folgende Weise im Dekalrationsbereich eines Standardmoduls deklariert werden:
Type strDEVMODE
RGB As String * 94
End Type
Type strctDEVMODE
dmDeviceName As String * 16
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 16
dmPad As Long
dmBits As Long
dmPW As Long
dmPH As Long
dmDFI As Long
dmDFr As Long
End Type
Mit Hilfe dieser Struktur wechselt die folgende Prozedur die Papierausrichtung des Berichtes vom Hoch- ins Querformat (oder umgekehrt):
DoCmd.SetWarnings True
Sub AusrichtungWechseln(Berichtname As String)
Const DM_HOCHFORMAT = 1
Const DM_QUERFORMAT = 2
Dim DeviceStrng As strDEVMODE 'die Zeichenfolge
Dim DeviceMode As strctDEVMODE 'die Struktur
Dim DeviceModeExtra As String 'TMP Zeichenfolge für DEVMODE
Dim rpt As Report
'Bericht in Entwurfsansicht öffnen
DoCmd.OpenReport Berichtname, acDesign
Set rpt = Reports(Berichtname)
If Not IsNull(rpt.PrtDevMode) Then
'DEVMODE-Struktur abfragen
DeviceModeExtra = rpt.PrtDevMode
'PrtDevMode ist genau 94 Bytes lang
DeviceStrng.RGB = DeviceModeExtra
'Zeichenfolge der Struktur zuweisen
LSet DeviceMode = DeviceStrng
DeviceMode.dmFields = DeviceMode.dmFields _
Or DeviceMode.dmOrientation
'Ausrichtung wechseln
If DeviceMode.dmOrientation = DM_HOCHFORMAT Then
DeviceMode.dmOrientation = DM_QUERFORMAT
Else
DeviceMode.dmOrientation = DM_HOCHFORMAT
End If
'Eigenschaft aktualisieren.
LSet DeviceStrng = DeviceMode
'die Struktur der Zeichenfolge zuweisen
Mid$(DeviceModeExtra, 1, 94) = DeviceStrng.RGB
'in Bericht zurückschreiben
rpt.PrtDevMode = DeviceModeExtra
End If
End Sub