Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Userform im Querformat drucken
k
Hallo,
ich fand zwar den Eintrag von Nepumuk unter: https://www.herber.de/forum/archiv/752to756/t755936.htm
jedoch erhalte ich eine Fehlermeldung in der Zeile 42 bei dem Code-Teil
.Zoom = .Zoom + Choose(intIndex, 50, 10, 1)
Warum ?! Woran liegt es ?
Meine Userform hat die Maße: 682,5 Height & 950,25 Width...
Gruß und Danke
K
AW: Userform im Querformat drucken
17.07.2009 14:20:16
k
Hallo Hajo,
...habe es erneut versucht - wieder: Fehler 1004 - "Die Zoom-Eigenschaft des PageSetup-Objektes kann nicht festgelegt werden." und bleibt im Debugg-Modus in Zeile 42 hängen...
Gruß und Danke für Deine Untersützung
K
AW: Userform im Querformat drucken
17.07.2009 17:15:11
k
? Kann mir jemand weiterhelfen...komme einfach nicht darauf - leider reichen meine VBA-Kenntnisse einfach nicht dazu aus !!!
Gruß und Danke
K
Anzeige
AW: Userform im Querformat drucken
17.07.2009 19:36:14
Tino
Hallo,
meinst Du so?
Dialog UserForm1
Option Explicit 
 
Private Sub CommandButton1_Click() 
Dim tempSH As Worksheet 
Set tempSH = Worksheets.Add 
 
Call ScreenCopy(True) 
tempSH.Paste 
 
With tempSH.PageSetup 
    .Orientation = xlLandscape 
    .Zoom = False 
    .FitToPagesWide = 1 
    .FitToPagesTall = 1 
End With 
 
tempSH.PrintOut 
DoEvents 
 
Application.DisplayAlerts = False 
 tempSH.Delete 
Application.DisplayAlerts = True 
 
 
End Sub 
kommt als Code in Modul1
Option Explicit 
 
Private Declare Sub keybd_event _
  Lib "user32" ( _
  ByVal byteVirtualKeycode As Byte, _
  ByVal byteScan As Byte, _
  ByVal lFlags As Long, _
  ByVal lExtraInfo As Long) 
   
Private Const KEYEVENTF_KEYUP As Long = &H2  ' Taste lösen 
Private Const VK_MENU         As Byte = &H12 ' Alt-Taste 
Private Const VK_SNAPSHOT     As Byte = &H2C ' Druck/PrtScrn-Taste 
 
 
Sub ScreenCopy(Optional ByVal ActiveWindow As Boolean = False) 
' Überträgt eine Bildschirmkopie des Desktops (ActiveWindow = False) 
' oder des aktiven Fensters (ActiveWindow = True) in die Zwischenablage. 
   
  If ActiveWindow Then 
   
    ' Nur das aktive Fenster abfotografieren 
    ' => Alt-Taste einbeziehen 
    keybd_event VK_MENU, 0, 0, 0                    ' Alt 'runter 
    keybd_event VK_SNAPSHOT, 0, 0, 0                ' Druck ' runter 
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0  ' Druck hoch 
    keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0      ' Alt hoch 
   
  Else 
   
    ' Den gesamten Desktop abfotografieren 
    keybd_event VK_SNAPSHOT, 0, 0, 0                ' Druck ' runter 
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0  ' Druck hoch 
   
  End If 
   
End Sub 
 
 
Gruß Tino
Anzeige
AW: Userform im Querformat drucken
17.07.2009 22:48:07
Kay
Hi Tino,
...vielen Dank. Bekomme keine Fehlermeldung mehr, aber habe noch das Problem mit dem "aktiven" Fenster (der Userform). Mit dem Code wird derzeit ja "alles" per Screenshot aufgenommen.
Jetzt steht in den Kommentaren von Dir, das zum einen ActiveWindow auf True zu setzen ist im Modul 1 sowie "Alt-Taste" einbeziehen...wie geht das ?
Gruß und Danke
Kay
AW: Userform im Querformat drucken
17.07.2009 23:09:31
Tino
Hallo,
durch Call Screencopy(True), wird doch das aktive Fenster kopiert?
Gruß Tino
AW: Userform im Querformat drucken
18.07.2009 10:05:08
Kay
Komisch ... aber ich habe alles drauf - incl. Windows Bildschirm und Excelfenster im Hintergrund und nicht nur die Userform ?
Kay
Anzeige
AW: Userform im Querformat drucken
18.07.2009 11:38:41
Tino
Hallo,
habe mal noch etwas getestet und es stimmt, mal funktioniert es mal nicht,
mansch mal wurde sogar nur der zuletzt kopierte Text als Bild eingefügt.
Habe jetzt noch etwas experimentiert, so funktioniert es bei mir recht gut.
Jetzt mache ich die Zwischenablage zuvor leer und noch eine kurze Pause am Ende.
Dialog UserForm1
Option Explicit 
 
Private Sub CommandButton1_Click() 
Dim tempSH As Worksheet 
Set tempSH = Worksheets.Add 
  
 
Call ScreenCopy(True) 
 
tempSH.Paste 
  
With tempSH.PageSetup 
    .Orientation = xlLandscape 
    .Zoom = False 
    .FitToPagesWide = 1 
    .FitToPagesTall = 1 
End With 
  
tempSH.PrintOut 
DoEvents 
  
Application.DisplayAlerts = False 
 tempSH.Delete 
Application.DisplayAlerts = True 
  
 
End Sub 
 
 
kommt als Code in Modul1
Option Explicit 
  
Private Declare Sub keybd_event _
  Lib "user32" ( _
  ByVal byteVirtualKeycode As Byte, _
  ByVal byteScan As Byte, _
  ByVal lFlags As Long, _
  ByVal lExtraInfo As Long) 
   
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long 
Public Declare Function EmptyClipboard Lib "user32" () As Long 
Public Declare Function CloseClipboard Lib "user32" () As Long 
 
Private Const KEYEVENTF_KEYUP As Long = &H2  ' Taste lösen 
Private Const VK_MENU As Byte = &H12 ' Alt-Taste 
Private Const VK_SNAPSHOT     As Byte = &H2C ' Druck/PrtScrn-Taste 
 
Private Function ClearClipboard() 
    OpenClipboard (0&) 
    EmptyClipboard 
    CloseClipboard 
End Function 
  
Sub ScreenCopy(Optional ByVal ActiveWindow As Boolean = False) 
' Überträgt eine Bildschirmkopie des Desktops (ActiveWindow = False) 
' oder des aktiven Fensters (ActiveWindow = True) in die Zwischenablage. 
 
  Call ClearClipboard 'Zwischenablage leer machen 
   
  If ActiveWindow Then 
    
    ' Nur das aktive Fenster abfotografieren 
    ' => Alt-Taste einbeziehen 
    keybd_event VK_MENU, 0, 0, 0                    ' Alt 'runter 
    keybd_event VK_SNAPSHOT, 0, 0, 0                ' Druck ' runter 
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0  ' Druck hoch 
    keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0      ' Alt hoch 
  Else 
    
    ' Den gesamten Desktop abfotografieren 
    keybd_event VK_SNAPSHOT, 0, 0, 0                ' Druck ' runter 
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0  ' Druck hoch 
      
  End If 
   
  DoEvents 
  Application.Wait Now + TimeSerial(0, 0, 1) 
End Sub 
 
Sub Schaltfläche1_KlickenSieAuf() 
 UserForm1.Show 
End Sub 

Gruß Tino
Anzeige

182 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige