xy.PrintForm aber mit Hochformat

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: xy.PrintForm aber mit Hochformat
von: ray
Geschrieben am: 12.04.2005 09:04:34
Hallo,
mit PrintForm drucke ich eine UF aus. Leider kommt das immer im querformat heraus. Wie kann ich mit code einstellen, daß der drucker hochformat drucken soll.
ich habe schon mal mit dem macrorecorder probiert, liefert aber keine brauchbaren Ergebnisse.
Viele Grüße aus dem sonnigen Norden bei erfrischenden 10 Grad und noch guter Laune
ray

Bild

Betrifft: AW: xy.PrintForm aber mit Hochformat
von: Nepumuk
Geschrieben am: 12.04.2005 11:09:33
Hallo ray,
folgendes Makro in ein Standardmodul:


Option Explicit
Private Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" ( _
     ByRef lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" ( _
     ByVal wCode As Long, _
     ByVal wMapType As LongAs Long
Private Declare Sub keybd_event Lib "user32.dll" ( _
     ByVal bVk As Byte, _
     ByVal bScan As Byte, _
     ByVal dwFlags As Long, _
     ByVal dwExtraInfo As Long)
Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type
Private Enum Constants
    KEYEVENTF_KEYUP = &H2
    VK_MENU = &H12
    lngMargin = &H1 'Breite der Seitenränder in cm
End Enum
Public Sub prcPrintForm(strFrmName As String)
    Dim typVerinfo As OSVERSIONINFO
    Dim bolNT As Boolean
    Dim intAltScan As Integer, intIndex As Integer
    Dim lngMode As Long
    Application.ScreenUpdating = False
    typVerinfo.dwOSVersionInfoSize = Len(typVerinfo)
    If GetVersionEx(typVerinfo) <> 0 Then bolNT = typVerinfo.dwPlatformId = 2
    lngMode = 1
    If Not bolNT Then lngMode = 0
    If bolNT And lngMode = 0 Then
        keybd_event vbKeySnapshot, 0&, 0&, 0&
    Else
        intAltScan = MapVirtualKey(VK_MENU, 0)
        keybd_event VK_MENU, intAltScan, 0, 0
        DoEvents
        keybd_event vbKeySnapshot, lngMode, 0&, 0&
    End If
    DoEvents
    keybd_event VK_MENU, intAltScan, KEYEVENTF_KEYUP, 0
    ThisWorkbook.Worksheets.Add
    Rows.RowHeight = 3
    Columns.ColumnWidth = 0.83
    With ActiveSheet
        .Paste
        With .PageSetup
            .Orientation = IIf(UserForms.Add(strFrmName).Width > _
                UserForms.Add(strFrmName).Height, 2, 1)
            .LeftMargin = Application.CentimetersToPoints(lngMargin)
            .RightMargin = Application.CentimetersToPoints(lngMargin)
            .TopMargin = Application.CentimetersToPoints(lngMargin)
            .BottomMargin = Application.CentimetersToPoints(lngMargin)
            .HeaderMargin = Application.CentimetersToPoints(0)
            .FooterMargin = Application.CentimetersToPoints(0)
            .CenterVertically = True
            .CenterHorizontally = True
            .Zoom = 10
            For intIndex = 1 To 3
                Do Until ExecuteExcel4Macro("Get.Document(50)") > 1
                    .Zoom = .Zoom + Choose(intIndex, 50, 10, 1)
                Loop
                .Zoom = .Zoom - Choose(intIndex, 50, 10, 1)
            Next
        End With
        .PrintOut
        Application.DisplayAlerts = False
        .Delete
        Application.DisplayAlerts = True
    End With
    Application.ScreenUpdating = True
End Sub


Der Aufruf aus dem Userform heraus lautet:


Call prcPrintForm(Me.Name)


Gruß
Nepumuk
Bild

Betrifft: AW: xy.PrintForm aber mit Hochformat
von: ray
Geschrieben am: 12.04.2005 11:54:56
Hallo Nepumuk und danke ersteinmal,

bis ich verstehe, was der code macht brauche ich eine Woche...
Gehe ich recht in der annahme, daß es keine geringere lösung für mein problem gibt. wenn ich den code richtig überblicke definierst du das ausdruckaussehen der uf. Ich dachte man könnte nur den button in den druckereinstellungen von hoch auf querformat setzen.
viele grüße immer noch sonnig und ohne wind schon schön warm...
ray
Bild

Betrifft: AW: xy.PrintForm aber mit Hochformat
von: Nepumuk
Geschrieben am: 12.04.2005 12:03:22
Hallo ray,
<>
Du gehst recht.
Das Programm mach eine Kopie des Userforms (Alt+Print Screen) und fügt sie in eine Tabelle als Bild ein. Dann wird die größe des Ausdrucks optimiert.
Gruß
Nepumuk
Bild

Betrifft: AW: xy.PrintForm aber mit Hochformat
von: ray
Geschrieben am: 12.04.2005 12:30:13
hi,
na, da werd ich schön langsam gehen müssen... :-)
gibt es eine möglichkeit dem drucker zu sagen, egal was kommt, druck es im hochformat?
Grüße Ray, der jetzt mittag macht, also geht...
Bild

Betrifft: AW: xy.PrintForm aber mit Hochformat
von: Nepumuk
Geschrieben am: 12.04.2005 12:36:20
Hallo ray,
die Zeile steuert das:
.Orientation = IIf(UserForms.Add(strFrmName).Width > _
UserForms.Add(strFrmName).Height, 2, 1)
Kommentiere sie aus oder lösche sie.
Gruß
Nepumuk
Bild

Betrifft: AW: xy.PrintForm aber mit Hochformat
von: ray
Geschrieben am: 12.04.2005 13:20:53
hmm, so what,
ich habe von hans gelernt, daß ich dem drucker sagen kann, von welchem Fach er drucken soll. Das muß doch auch mit der Eigenschaft hochformat gehen. Dein Code ist mir noch zu schwer. ich denke, daß ich erst den drucker einrichte und dann befehlte printform.
Hast Du ne Idee, wie ich es dem lpt sage?
Viele Grüße und danke für Deine Geduld
ray
Bild

Betrifft: AW: xy.PrintForm aber mit Hochformat
von: Nepumuk
Geschrieben am: 12.04.2005 13:43:14
Hallo ray,
wenn das so einfach wäre, hätte ich mir die Mühe mit dem Programm nicht machen müssen. Es gibt keine andere Möglichkeit. Oder bekommst du einen Dialog angezeigt, auf den man zugreifen könnte?
Gruß
Nepumuk
Bild

Betrifft: AW: xy.PrintForm aber mit Hochformat
von: ray
Geschrieben am: 12.04.2005 15:27:28
hmm, dialog anzeigen??? kann man die inkeyMethode im hintergrund also nicht sichtbar laufen lassen?
 Bild

Beiträge aus den Excel-Beispielen zum Thema "einfache Abfrage ??"