Discussion:
Drucker auswählen & Drucken mit VBA die 2.
(zu alt für eine Antwort)
Jochen Faber
2003-11-17 15:31:59 UTC
Permalink
Hallo zusammen

ich habe mir mit Hilfe aus dem Web und einiger Personen hier (DANKE !!!)
folgendes zurechtgebastelt:

In Modul 1 steht:
Public Druckertyp as String
Public Sub Combo_Drucker_Fill()
Tabelle1.Combo_Druckerauswahl.Clear
Tabelle1.Combo_Druckerauswahl.AddItem "Bitte Drucker auswählen..."
'Mobilen Drucker einlesen
Open "c:\wiederbeschaffung\mdrucker.ini" For Input As #1
Input #1, Druckertyp
Close #1
Tabelle1.Combo_Druckerauswahl.AddItem Druckertyp
'Office Drucker einlesen
Open "c:\wiederbeschaffung\odrucker.ini" For Input As #1
Input #1, Druckertyp
Close #1
Tabelle1.Combo_Druckerauswahl.AddItem Druckertyp

In einem Sheet befindet sich dann einen ComboBox mit folgendem Code:

Select Case Me.Combo_Druckerauswahl.ListIndex
Case 0
Dim hinweis
hinweis = MsgBox("Bitte zuerst Drucker auswählen !!",
vbOKOnly, "Fehler !!!")
Case 1
Application.ActivePrinter = Druckertyp
Case 2
Application.ActivePrinter = Druckertyp
End Select

Der Inhalt der Dateien ist:
mdrucker.ini -> Canon BJC-85
odrucker.ini -> \\dbgs2001\DBGPLM01

Das sind die Namen der Drucker wie sie im Druckerordner gelistet sind.

Das Problem ist: Wenn ich über die ComboBox einen Drucker auswähle
kommt: Laufzeitfehler '1004' Die Methode 'ActivePrinter' für das Objekt
'_Applikation' ist fehlgeschlagen.

Der Fehler tritt bei folgender Codezeile auf:
Application.ActivePrinter = Druckertyp
In der Variablen Druckertyp steht dann der Inhalt der ini-Dateien.

Kann mir jemand helfen ??

Danke im vorraus

Tschau

Jochen Faber
Stefan Onken
2003-11-17 16:41:40 UTC
Permalink
hallo Jochen,
das Problem könnte der ListIndex sein:
wenn nichts ausgewählt wurde, ist er -1
der erste Eintrag ist 0, der zweite 1 usw

Gruß
stefan
Post by Jochen Faber
Hallo zusammen
ich habe mir mit Hilfe aus dem Web und einiger Personen hier (DANKE !!!)
Public Druckertyp as String
Public Sub Combo_Drucker_Fill()
Tabelle1.Combo_Druckerauswahl.Clear
Tabelle1.Combo_Druckerauswahl.AddItem "Bitte Drucker auswählen..."
'Mobilen Drucker einlesen
Open "c:\wiederbeschaffung\mdrucker.ini" For Input As #1
Input #1, Druckertyp
Close #1
Tabelle1.Combo_Druckerauswahl.AddItem Druckertyp
'Office Drucker einlesen
Open "c:\wiederbeschaffung\odrucker.ini" For Input As #1
Input #1, Druckertyp
Close #1
Tabelle1.Combo_Druckerauswahl.AddItem Druckertyp
Select Case Me.Combo_Druckerauswahl.ListIndex
Case 0
Dim hinweis
hinweis = MsgBox("Bitte zuerst Drucker auswählen !!",
vbOKOnly, "Fehler !!!")
Case 1
Application.ActivePrinter = Druckertyp
Case 2
Application.ActivePrinter = Druckertyp
End Select
mdrucker.ini -> Canon BJC-85
odrucker.ini -> \\dbgs2001\DBGPLM01
Das sind die Namen der Drucker wie sie im Druckerordner gelistet sind.
Das Problem ist: Wenn ich über die ComboBox einen Drucker auswähle
kommt: Laufzeitfehler '1004' Die Methode 'ActivePrinter' für das Objekt
'_Applikation' ist fehlgeschlagen.
Application.ActivePrinter = Druckertyp
In der Variablen Druckertyp steht dann der Inhalt der ini-Dateien.
Kann mir jemand helfen ??
Danke im vorraus
Tschau
Jochen Faber
Jochen Faber
2003-11-18 07:40:33 UTC
Permalink
Hi Stefan,

das ist nicht das Problem in der Variable steht ja "Canon BJC-85", somit
sieht der ganz Befehl ja so aus: Application.ActivePrinter = "Canon BJC-85"

tschau

Jochen
Post by Stefan Onken
hallo Jochen,
wenn nichts ausgewählt wurde, ist er -1
der erste Eintrag ist 0, der zweite 1 usw
stefan onken
2003-11-18 08:28:04 UTC
Permalink
hallo Jochen,
dann ist der Druckername nicht korrekt. Zeichne das
Drucken inkl. Druckerauswahl mal per Makro auf.
Als Druckernamen erhalte ich dann zB

Application.ActivePrinter = _
"hp deskjet 3820 series auf LPT1:"

Lasse ich "auf LPT1:" weg, kommt der Laufzeitfehler.


Außerdem hast du in deinem Code 2x denselben Befehl:

Case 1
Application.ActivePrinter = Druckertyp
Case 2
Application.ActivePrinter = Druckertyp

Druckertyp ist der Inhalt der globalen Variable, aber
nicht die Auswahl von Combo_Druckerauswahl

Gruß
stefan
-----Originalnachricht-----
Hi Stefan,
das ist nicht das Problem in der Variable steht
ja "Canon BJC-85", somit
Application.ActivePrinter = "Canon BJC-85"
tschau
Jochen
Post by Stefan Onken
hallo Jochen,
wenn nichts ausgewählt wurde, ist er -1
der erste Eintrag ist 0, der zweite 1 usw
.
Jochen Faber
2003-11-18 08:35:09 UTC
Permalink
Hi Stefan,

danke für den Tip mit dem "auf LPT1:" Daran hats gelegen.

Tschau

Jochen
Post by Stefan Onken
hallo Jochen,
dann ist der Druckername nicht korrekt. Zeichne das
Drucken inkl. Druckerauswahl mal per Makro auf.
Als Druckernamen erhalte ich dann zB
Application.ActivePrinter = _
"hp deskjet 3820 series auf LPT1:"
Lasse ich "auf LPT1:" weg, kommt der Laufzeitfehler.
Case 1
Application.ActivePrinter = Druckertyp
Case 2
Application.ActivePrinter = Druckertyp
Druckertyp ist der Inhalt der globalen Variable, aber
nicht die Auswahl von Combo_Druckerauswahl
Gruß
stefan
Dominik
2003-11-20 10:46:29 UTC
Permalink
Hallo,

ich habe ein ähnliches Problem, allerdings in einer Terminalserverumgebung.
Wenn ich den Drucker über die Makroaufzeichnung auswähle erhalte ich
"QMS 6000 auf NE001:". Diese Zuordnung ändert sich aber anscheinend nach
einem TS Neustart. Daher meine Frage, wie kann man das was beim
Makroaufzeichnen passiert (nämlich die Erkennung auf welchem NE Port der
gewünschte Drucker derzeit hängt) über VBA erfahren. In Word VBA reicht
übrigens nur der Druckername wie er in der Druckerübersicht angezeigt
wird...

Gruss
Dominik Röpert
Post by Jochen Faber
Hi Stefan,
danke für den Tip mit dem "auf LPT1:" Daran hats gelegen.
Tschau
Jochen
Post by Stefan Onken
hallo Jochen,
dann ist der Druckername nicht korrekt. Zeichne das
Drucken inkl. Druckerauswahl mal per Makro auf.
Als Druckernamen erhalte ich dann zB
Application.ActivePrinter = _
"hp deskjet 3820 series auf LPT1:"
Lasse ich "auf LPT1:" weg, kommt der Laufzeitfehler.
Case 1
Application.ActivePrinter = Druckertyp
Case 2
Application.ActivePrinter = Druckertyp
Druckertyp ist der Inhalt der globalen Variable, aber
nicht die Auswahl von Combo_Druckerauswahl
Gruß
stefan
stefan onken
2003-11-20 12:28:17 UTC
Permalink
hallo Dominik,
vielleicht hilft dir dieser ältere NG-Beitrag:
http://tinyurl.com/vtaa

Gruß
stefan
-----Originalnachricht-----
Hallo,
ich habe ein ähnliches Problem, allerdings in einer
Terminalserverumgebung.
Wenn ich den Drucker über die Makroaufzeichnung auswähle
erhalte ich
"QMS 6000 auf NE001:". Diese Zuordnung ändert sich aber
anscheinend nach
einem TS Neustart. Daher meine Frage, wie kann man das
was beim
Makroaufzeichnen passiert (nämlich die Erkennung auf
welchem NE Port der
gewünschte Drucker derzeit hängt) über VBA erfahren. In
Word VBA reicht
übrigens nur der Druckername wie er in der
Druckerübersicht angezeigt
wird...
Gruss
Dominik Röpert
Post by Jochen Faber
Hi Stefan,
danke für den Tip mit dem "auf LPT1:" Daran hats
gelegen.
Post by Jochen Faber
Tschau
Jochen
Post by Stefan Onken
hallo Jochen,
dann ist der Druckername nicht korrekt. Zeichne das
Drucken inkl. Druckerauswahl mal per Makro auf.
Als Druckernamen erhalte ich dann zB
Application.ActivePrinter = _
"hp deskjet 3820 series auf LPT1:"
Lasse ich "auf LPT1:" weg, kommt der Laufzeitfehler.
Case 1
Application.ActivePrinter = Druckertyp
Case 2
Application.ActivePrinter = Druckertyp
Druckertyp ist der Inhalt der globalen Variable, aber
nicht die Auswahl von Combo_Druckerauswahl
Gruß
stefan
.
Loading...