Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1616to1620
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

Druckseiten festlegen

Druckseiten festlegen
13.04.2018 22:38:28
Ambros
Hallo zusammen!
Möchte gerne den Druckbereich per vba festlegen auf die erste Seite, bzw. Seite 1 u. 2 bzw Seite 1-3 - jew. in separaten Macros.
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$55" geht nicht da sich die Zeilenhöhen und damit die Zeilennummer der jew. letzten Zeilen der Seiten bei jeder Bearbeitung verändern - darum über die Seitenzahl
Möchte gerne den Ausdruck mit :
ActiveSheet.PrintOut ActivePrinter:="Brother MFC-J6710DW Printer"
starten wobei hier der Druckbereich bzw die Druckseiten bereits festgelegt sein müssen, also ohne NE-Nummer, da sich die Ne-Nummer hin u. wieder verändert (bei Neuinstallation von Druckern oder PDF-Drucker...) - also einfach den Druckbereich auf Druckseiten festlegen und mit dem jeweiligen Drucker ausdrucken. Geht das?
Kann man den aktiven Drucker im Vorhinein bestimmen ohne NE-Nummer?
Vielen Dank an die Leser und großen Dank im Voraus denen, die mir antworten.
Gruß, Ambros

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Druckseiten festlegen
14.04.2018 07:54:23
Hajo_Zi
warum nicht einfach Druckbereich A:F und Seite 1 bis 3 Drucken?

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: Druckseiten festlegen
14.04.2018 09:29:45
Ambros
Danke für die Antwort, aber
wie müsste dann der Code lauten - wie gesagt, müsste erst den Druckbereich festlegen (auf Anzahl der Seiten, A:F würde sich dann eigentlich erübrigen) und dann den Drucker festlegen ohne die NE-Nummer, von mir aus auch zuvor...
Vielen Dank schon mal
Gruß Ambros
AW: Druckseiten festlegen
14.04.2018 09:33:01
Hajo_Zi
Den Druckbereich machst Du doch einmal von Hand. Seiten Drucken, benutze den Makrorecorder.
Keine Ahnung was Ne-Nummer ist.
Gruß Hajo
Anzeige
AW: Druckseiten festlegen
14.04.2018 10:05:04
Herbert
Oh, oh, oh, Hajo hat keine Ahnung was eine "Ne"-Nr. ist! Das erstaunt mich doch aber sehr, da ja sogar ich davon Kenntnis habe! Aber ich helfe gerne dabei, Hajo noch etwas neues zu vermitteln.
Nun denn: Wenn Du in Excel die installierten Drucker ausliest, erhältst Du eine Liste (s.u.) und diese setzt sich aus dem von Dir vergebenen Druckernamen und der vom System vergebenen Portbezeichnung zusammen.
Hier nun meine Beispielliste der installierten Drucker:
1SW auf Ne03:
2Col auf Ne02:
3Nuance PDF auf NUL
FAX auf Ne01:
PaperPort auf Ne00:
Send To OneNote 2013 auf nul:
Wie Du siehst, wird vom System an den Namen immer der Port ("auf Ne01:", etc.) angehängt.
Aber ganz ehrlich, ich kann mir nicht vorstellen, dass Du das nicht gewusst haben sollst!
Servus
Anzeige
AW: Druckseiten festlegen
14.04.2018 11:03:03
Ambros
Vielen Dank erstmal,
Drucker auslesen - kein Problem, aber wenn ich das richtig sehe, habe ich keinen Einfluss auf die vom System vergebenen Protbezeichnungen.
Mein Problem ist, bei neu instal. Druckern oder entfernen von Druckern vergibt das System scheinbar die Ne-Nummern völlig neu, sämtliche Macros die Ne-N. beinhalten, drucken plötzlich auf einem anderen Drucker.
Es gibt ja die Möglichkeit, den Druck mit dem Code:
ActiveSheet.PrintOut ActivePrinter:="Brother MFC-J6710DW Printer"
zu starten, hierbei wird keine NE-N. benötigt (hier ist es auch egal, welche NE-N. dem jew. Drucker zugeordnet ist und ob er sich mal ändert, weil nur der Drucker-Name angegeben wird), aber dann muss zuvor der Druckbereich festgelegt sein, wie ich eingangs schon geschildert habe. Nochmals die Frage: Wie kann ich den Druckbereich auf z.B. Seite 1, oder Seite 1 u. 2 oder 1-3 "festlegen"(voreinstellen), ohne Angabe von Zeilen u. Spalten - nur Seiten! und dann entweder mit zuvor festgelegtem aktiven Drucker - festgelegt ohne Angabe der NE-Nummer - nur mit Druckernahme siehe oben.
Kurzum: bräuchte einen Code zum vordefinieren des Druckbereiches auf 1 oder 2 oder 3 ... Seiten und einen Code zum definieren des aktiven Druckers aber ohne NE-Nummer.
Mit Macrorecorder hab ich schon alles durch, im Netz finde ich nichts brauchbares, gibts doch fast nicht!
Gruß Ambros
Anzeige
AW: Druckseiten festlegen
14.04.2018 11:37:38
fcs
Hallo Ambros,
in der Druckanweisung können als Parameter neben dem Drucker auch die Seiten angeben, die gedruckt werden sollen.
Seitenumbrüche zu ermitteln und abzuarbeiten ist etwas komplizierter.
Die Prüfung des Druckernamens kannst du weglassen - wenn der Drucker nicht vorhanden ist, dann wird auf dem aktiven Drucker in Excel gedruckt. Dann ist die Fuction "fncPrinter_plus_Port" nicht erforderlich, die den Druckernamen inkl. Prot ermittelt.
Gruß
Franz
'##############################################################
'# Windows Vista  -       Excel 2010    -        VBA 7.0.1628 #
'# F. Sielck                                       2018-04-14 #
'# Modul: Allgemeines Modul                                   #
'# Druckbereich setzen auf Seiten wechsel, Drucker setzen     #
'# Makros sollten auch unter Excel 2003 lauffähig sein        #
'######    Druckbereiche für Seiten 1 bis x setzen     #####
Sub Druckbereich_Seite_1_bis_1()
Call Druckbereich_Seiten(1)
End Sub
Sub Druckbereich_Seite_1_bis_2()
Call Druckbereich_Seiten(2)
End Sub
Sub Druckbereich_Seite_1_bis_3()
Call Druckbereich_Seiten(3)
End Sub
Sub Druckbereich_Seiten(bis As Integer, Optional wks As Worksheet)
Dim objHPB As HPageBreak
Dim lngView As Long
Dim intHPB As Integer
Dim Zeile_L As Long, Zeile_von As Long, Zeile_bis As Long
If wks Is Nothing Then Set wks = ActiveSheet
With ActiveWindow
lngView = .View
If .View  xlPageBreakPreview Then
.View = xlPageBreakPreview
End If
End With
With wks
'vorhandene manuelle Seitenumbrüche zurücksetzen
.ResetAllPageBreaks
.PageSetup.PrintArea = "A:F"
.Calculate
Zeile_von = 1
'letzte sichtbare Zeile mit Inhalt in Spalten A:F
Zeile_L = .Range("A:F").Find(What:="*", After:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
Zeile_bis = Zeile_L
For intHPB = 1 To .HPageBreaks.Count
If intHPB = bis Then
Zeile_bis = .HPageBreaks(intHPB).Location.Row - 1
Exit For
End If
Next
.PageSetup.PrintArea = _
.Range(.Cells(Zeile_von, 1), .Cells(Zeile_bis, 6)).AddressLocal(True, True, xlA1)
End With
With ActiveWindow
If .View  lngView Then
.View = lngView
End If
End With
End Sub
Sub Drucken()
Dim sPrinter As String
Dim wks As Worksheet
Set wks = ActiveSheet
sPrinter = "Brother MFC-J6710DW Printer"
If fncPrinter_plus_Port(sPrinter) = "" Then
MsgBox "Drucker """ & sPrinter & """ nicht gefunden"
Else
wks.PrintOut from:=Seite_von, to:=Seite_bis, ActivePrinter:=sPrinter
End If
End Sub
'######    Seiten direkt drucken    #####
Sub Druck_Seite_1_bis_1()
Call Drucken_2(1, 1)
End Sub
Sub Druck_Seite_1_bis_2()
Call Drucken_2(1, 2)
End Sub
Sub Druck_Seite_1_bis_3()
Call Drucken_2(1, 3)
End Sub
Sub Drucken_2(Seite_von, Seite_bis, Optional sPrinter As String)
Dim wks As Worksheet
Set wks = ActiveSheet
If sPrinter = "" Then sPrinter = "Brother MFC-J6710DW Printer"
If fncPrinter_plus_Port(sPrinter) = "" Then
MsgBox "Drucker """ & sPrinter & """ nicht gefunden"
Else
wks.PageSetup.PrintArea = "A:F" 'kann man weglassen, wenn schon manuel gesetzt
wks.PrintOut from:=Seite_von, to:=Seite_bis, ActivePrinter:=sPrinter
End If
End Sub
Function fncPrinter_plus_Port(strPrinter) As String
'gibt Druckername inklusive Port zurück
'muss für neuere Windows-Versionen oder 64-bit-Systeme evtl angepasst werden
Dim WSHShell As Object
Dim objWMI As Object, objItem As Object
Dim sKEY As String
Set WSHShell = CreateObject("WScript.Shell")
Select Case Environ("OS")
Case "Windows_NT"
Set objWMI = GetObject("winmgmts:\\.\root\cimv2").ExecQuery( _
"Select * from Win32_Printer")
Case Else
MsgBox "Set objWMI in Function """ & fncPrinter_plus_Port _
& """ muss bezüglich Betriebssystem angepasst werden!"
Exit Function
End Select
For Each objItem In objWMI
Select Case Environ("OS")
Case "Windows_NT"
sKEY = "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices\" _
& objItem.Name
Case Else
MsgBox "sKEY in Function """ & fncPrinter_plus_Port _
& """ muss bezüglich Betriebssystem angepasst werden!"
Exit Function
End Select
If LCase(objItem.Name) = LCase(strPrinter) Then
fncPrinter_plus_Port = objItem.Name & " " _
& Replace(WSHShell.RegRead(sKEY), "winspool,", "auf ")
Exit For
End If
Next objItem
Set WSHShell = Nothing: Set objWMI = Nothing: Set objItem = Nothing
End Function

Anzeige
AW: Druckseiten festlegen
14.04.2018 12:30:01
Ambros
Hallo Franz,
da hast du dich aber jetzt mächtig "ins Zeug" gelegt! Donnerwetter!
Funktioniert einwandfrei! Genau das, was ich suche! Vielen, Vielen Dank! Freut mich sehr!
Wird seine Zeit dauern, bis ich den Code checke, aber Hauptsache er läuft schon mal!
Ziehe den Hut vor dir, so einen Code schnell mal aus dem Ärmel zu schütteln!
Vielen Dank nochmal
Gruß Ambros

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige