Seitenformat via VBA einstellen

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

Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.