Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1256to1260
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
Inhaltsverzeichnis

Tabellenblatt mit Userform drucken

Tabellenblatt mit Userform drucken
Pepi
Hallo zusammen
Ich möchte ein Tabellenblatt mit einer Unserform zusammen drucken - habe diesen Code gefunden.
.Shapes(1).Top = .Rows(18).Top gibt aber mit Win7, Office 2010 folgenden Fehler:
"Der Index in der angegeben Sammlung ist ausserhalb des zulässigen Bereichs."
Kann mir jemand weiterhelfen? Vielen Dank
Pepi
Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" ( _
ByVal wCode As Long, _
ByVal wMapType As Long) As 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 Declare Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
Private Const KEYEVENTF_KEYUP = &H2
' --------------------------------------------------------------------------------------------
Public Sub XprcPrintForm()
Dim intAltScan As Integer
intAltScan = MapVirtualKey(vbKeyMenu, 0&)
Call keybd_event(vbKeyMenu, intAltScan, 0&, 0&)
Call keybd_event(vbKeySnapshot, 0&, 0&, 0&)
DoEvents
Call keybd_event(vbKeyMenu, intAltScan, KEYEVENTF_KEYUP, 0&)
With Tabelle1
.Paste
.Shapes(1).Top = .Rows(18).Top
.Shapes(1).Left = .Columns(1).Left
With .Shapes(1)
.LockAspectRatio = msoFalse
.Height = 220
.Width = 1000
End With
.PrintOut
.Shapes(1).Delete
End With
End Sub

AW: Tabellenblatt mit Userform drucken
12.04.2012 16:05:13
Rudi
Hallo,
Win7 32 oder 64 bit?
Bei 64 bit versuchs mal so:
  #If win64 Then
Private Declare ptrsafe Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" _
(ByVal wCode As Longptr, ByVal wMapType As Longptr) As Longptr
Private Declare ptrsafe Sub keybd_event Lib "user32.dll" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Longptr, _
ByVal dwExtraInfo As Longptr)
Private Declare Sub ptrsafe Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Longptr)
#Else
Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" ( _
ByVal wCode As Long, _
ByVal wMapType As Long) As 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 Declare Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
#End If
Stör dich nicht an den Kompilermeldungen bei der Eingabe.
Gruß
Rudi
Anzeige
AW: Tabellenblatt mit Userform drucken
12.04.2012 17:14:58
Pepi
Hallo Rudi
vielen Dank für die schnelle Antwort
Ich verstehe den code leider nicht - doch wenn ich den 64bit code in das Modul anstelle meinem kopiere, bleibt die letzte Zeile rot "Private Declare Sub ptrsafe Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Longptr)" - was auf einen Fehler hindeutet, den ich aber nicht rausfinden kann.
vielleicht siehst Du ihn
vielen Dank
Pepi
AW: Tabellenblatt mit Userform drucken
12.04.2012 18:24:17
Rudi
Hallo,
da ist ein Dreher drin.
  #If win64 Then
Private Declare ptrsafe Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" _
(ByVal wCode As Longptr, ByVal wMapType As Longptr) As Longptr
Private Declare ptrsafe Sub keybd_event Lib "user32.dll" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Longptr, _
ByVal dwExtraInfo As Longptr)
Private Declare PtrSafe Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Longptr)
#Else
Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" ( _
ByVal wCode As Long, _
ByVal wMapType As Long) As 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 Declare Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
#End If

Gruß
Rudi
Anzeige
AW: Tabellenblatt mit Userform drucken
13.04.2012 08:45:08
Pepi
Hallo Rudi
Der neue Code gibt zwar keine roten Zeilen mehr, aber das Makro
Public Sub XprcPrintForm()
Dim intAltScan As Integer
intAltScan = MapVirtualKey(vbKeyMenu, 0&)
Call keybd_event(vbKeyMenu, intAltScan, 0&, 0&)
Call keybd_event(vbKeySnapshot, 0&, 0&, 0&)
DoEvents
Call keybd_event(vbKeyMenu, intAltScan, KEYEVENTF_KEYUP, 0&)
With Tabelle1
.Paste
.Shapes(1).Top = .Rows(18).Top
.Shapes(1).Left = .Columns(1).Left
With .Shapes(1)
.LockAspectRatio = msoFalse
.Height = 220
.Width = 1000
End With
.PrintOut
.Shapes(1).Delete
End With
End Sub
macht bei .Shapes(1).Top = .Rows(18).Top immer noch einen Fehler.
Vieleicht gibt es ja einen anderen Zugang - ich möchte eine Tabelle mit einem Userform ausdrucken!
mfg
Pepi
Anzeige
AW: Tabellenblatt mit Userform drucken
15.04.2012 08:48:43
fcs
Hallo Pepi,
evtl. gibt es bei der Zählung der Shapes noch ein Problem.
Unter Excel 2010, Windows Vista funktioniert folgendes. Hier wird dann immer das zuletzt eingefügte Shape-Objekt angesprochen. D.h. es gibt keine Probleme, wenn auf dem Blatt noch andere Shape-Objekte vorhanden sind.
Gruß
Franz
Public Sub XprcPrintForm()
Dim intAltScan As Integer, objShape As Shape
intAltScan = MapVirtualKey(vbKeyMenu, 0&)
Call keybd_event(vbKeyMenu, intAltScan, 0&, 0&)
Call keybd_event(vbKeySnapshot, 0&, 0&, 0&)
DoEvents
Call keybd_event(vbKeyMenu, intAltScan, KEYEVENTF_KEYUP, 0&)
With Tabelle1  'Codename des Tabellenblatts ggf. anpassen
'oder
'    With Worksheets("Tabelle XYZ")
'oder
'    With ActiveSheet
.Paste
Set objShape = .Shapes(.Shapes.Count)
objShape.Top = .Rows(18).Top
objShape.Left = .Columns(1).Left
With objShape
.LockAspectRatio = msoFalse
.Height = 220
.Width = 1000 'ca. 480 für A4-hoch, ca. 740 für A4-quer
End With
UserForm1.Hide      'zum Testen Userform ausblenden
.PrintPreview       'zum Testen
'        .PrintOut
objShape.Delete
UserForm1.Show     'zum Testen Userform wieder einblenden
End With
End Sub

Anzeige
AW: Tabellenblatt mit Userform drucken
16.04.2012 08:15:55
Pepi
Hallo Franz
Lieben Dank für Deine Bemühungen
Leider erhalte ich den Fehler "MapVirtualKey" Sub oder Funktion nicht definiert
vom Ansatz her finde ich diesen Code sehr interessant
vielleicht kannst Du mir nochmals helfen
mfg
Pepi
AW: Tabellenblatt mit Userform drucken
16.04.2012 12:17:49
fcs
Hallo Pepi,
zusätzlich zu dieser Prozedur muss du auch die Deklarationen von Rudi verwenden.
Diese Codezeilen muss du als erste Zeilen im Modul einfügen - vor allen Subs und Functions.
Gruß
Franz
AW: Tabellenblatt mit Userform drucken
19.04.2012 08:06:32
Pepi
Hallo Franz und Co.
Jetzt habe ich den ganzen Code zusammen - keine Fehlermeldung. Das Makro macht aus den ganzen Bildschirm einen Printscreen, ruft den Screenshoot-Editor aus und das ganze wird gedruckt.
Was ich brauche ist aber: Das Exceltabellenblatt soll ganz normal gedruckt werden und falls sich ein geöffnetes Userform darauf befindet, soll dieses mitgedruckt werden.
Ich somit immer noch auf weitere Hilfe angewiesen.
mfg
Pepi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige