Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
184to188
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
184to188
184to188
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Druckereinstellungen bei Druck aus Userform (3.)

Druckereinstellungen bei Druck aus Userform (3.)
30.11.2002 13:07:48
Björn
Hei zusammen,

ich bräuchte noch einmal Euere Hilfe bei meinem immer noch nicht gelösten Problem [ :-((((], wie man dem Nutzer bei einer Userform in einem xl-AddIn die Möglichkeit bieten kann, den Drucker zu konfigurieren. Andre, Nepumuk und Ralf Sögel waren schon so nett, sich Gedanken zu diesem Problem zu machen und haben ein Paar Tipps gegeben. Tatsächlich dachte ich urspünglich auch, mit Andres Tipp:

Public Sub CommandButton3_Click()
Dialogs(xlDialogPrinterSetup).Show
End Sub

eine Lösung gefunden zu haben, nachdem der Aufruf des Druckermenüs auf die Weise erstmals gelang. Richtigerweise ist es jedoch so, daß der Aufruf dann, aber auch nur dann klappt, wenn neben dem xla AddIn zugleich eine weitere normale (leere) Arbeitsmappe geöffnet. In diesem Fall funktioniert aber auch der Befehl Dialogs(xlDialogPrint).Show.

Daß bei Aufruf des Druckertreibers eine weitere Arbeitsmappe geöffnet sein muß, wäre per se zwar vielleicht etwas unschön, ließe sich aber mit Neuanlage einer normalen Arbeitsmappe bei Aufruf des xla vertretbar lösen. Das Problem ist vielmehr, daß sich alle über den Druckerdialog vorgenommenen Einstellungen entsprechend auch automatisch nur auf diese Arbeitsmappe beziehen. Alle meine Versuche, die Einstellungen im Druckmenü auf die wks im xla zu beziehen, indem ich die auszudruckenden wks im xla vor Aufruf des Druckermenüs zu selecten, zu aktivieren und was auch immer sonst versuchte, sind bislang gescheitert.

Z.B. produziert... :

Public Sub CommandButton3_Click()
ThisWorkbook.Sheets("Antrag").Range("A1").Select
Application.Dialogs(xlDialogPrinterSetup).Show
ThisWorkbook.Worksheets("Antrag").Range("A1:J67").PrintOut From:=1, To:=1, Copies:=1
End Sub

... in Zeile 2 den Laufzeitfehler 1004 "Die Select-Methode des Range-Objekts ist fehlerhalft".

Und auch der Vorschlag von Ralf Sögel, Thisworkbook einfach durch Activeworkbook zu ersetzen, ist natürlich nicht zielführend. Denn Activeworkbook ist ja gerade nicht das gewünschte wks im xla, sondern die angezeigte leere normale xls-Arbeitsmappe. Daher kassiert man bei...:

Public Sub CommandButton3_Click()
ActiveWorkbook.Sheets("Antrag").Range("A1").Select
Application.Dialogs(xlDialogPrinterSetup).Show
ThisWorkbook.Worksheets("Antrag").Range("A1:J67").PrintOut From:=1, To:=1, Copies:=1
End Sub

...nur Laufzeitfehler 9 ("außerhalb des Index"). :-((((((((((((((


Auch bringt es nichts, einfach vor Aufruf des Druckmenüs einen Wert im gewünschten Druck-wks des xla festzulegen, also z.B.:

Public Sub CommandButton3_Click()
ThisWorkbook.Sheets("Antrag").Range("A1").value = "Test"
Application.Dialogs(xlDialogPrinterSetup).Show
ThisWorkbook.Worksheets("Antrag").Range("A1:J67").PrintOut From:=1, To:=1, Copies:=1
End Sub

Zwar setzt die Routine brav das "Test" in A1 ein, ruft den druckerdialog auf. Aber alle Einstellungen beziehen sich wiederum nur auf die geöffnete normale xls-Datei. *wein*

Hat irgend jemand noch eine Idee, wie man diese Problem lösen kann???? Oder muß ich einfach akzeptieren, daß man den Druckerdialog nicht auf ein in einem xla integriertes Worksheet anwenden kann? Seltsam, daß man ja trotzdem die im xla enthaltenen wks ausdrucken kann. Wahrscheinlich geht es irgendwie doch. Aber ist wohl ziemlich kompliziert.

Daß ich unbedingt ein xla und kein xls verwenden möchte, hat seinen Hintergrund darin, daß ich den Zugriff auf die Tabellenblätter selbst verhindern möchte, um Manipulationen der sensiblen Daten in den wks-Formularen nach Möglichkeit auszuschließen. Ich weiß, daß man das auch durch einen Workaround aus screenupdating = false / xlveryhidden / kurzeitigem Einblenden / Druckmenü aufrufen / Drucken / wieder ausblenden auch lösen könnte. Aber das scheint mir keinen wirklich brauchbaren Schutz zu bieten und wäre wirklich nur die allerletzte Notlösung. Vielleicht hat aber jemand noch eine Idee, wie man den Zugriff und Ansicht der auszudruckenden wks auf andere Weise halbwegs zuverlässig unterbinden kann? Leider besteht auch nicht die Möglichkeit, den Nutzer auf die Option der Änderung der Standardeinstellungen des jeweiligen Druckers hinzuweisen, da diese Option für die normalen User durch die schlauen Netzwerkheinis deaktiviert ist.

Vielen Dank nochmals an Andre, Nepumuk und Ralf Sögel für die bisherigen Tipps, Danke für jeden neuen Vorschlag und viele Grüße

Björn




4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Druckereinstellungen bei Druck aus Userform (3.)
30.11.2002 15:28:29
M. Kuhn
Moin Björn,

ich habe eine Mail aus dem alten Thread zu diesem Thema bekommen, warum auch immer. Dort habe ich auch eine Anregung gepostet.

Public Sub CommandButton3_Click()
Workbooks("Test-Datei.xla").Worksheets(2).Range("A1:J67").PrintOut From:=1, Preview:=True, To:=1, Copies:=1
End Sub

MfG M. Kuhn

SUPER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30.11.2002 16:27:19
Björn
*tanz* *freu*

Huhu Mr. M. :-)

ich glaube es geht tatsächlich so. Ich muß wohl noch ein bißchen rumschrauben, aber grundsätzlich scheint das ein gangbarer Weg zu sein. Zumindest deuten die ersten Tests darauf hin :-)))))))))))))).

Freilich muß man wohl erst vor dem Aufruf der Vorschau, die Userform hiden und nach dem Schließen der Vorschau wieder hervorholen. Also für jeden, der das nachvollziehen will:

Sub Commandbutton_Click()
Userform.Hide
Workbooks("print3.xla").Worksheets("Antrag").Range("A1:J67").PrintOut From:=1, Preview:=True, To:=1, Copies:=1
Userform.Show
End Sub

Außerdem habe ich leider mehrere Tabellenblätter, die gedruckt werden müssen. Und es scheint nicht zu funktionieren, nach dem Schließen der Vorschau gleich wieder die nächste Vorschau für die weiteren wks aufzurufen. Aber ich sollte wohl ohnehin grundsätzlich zusehen, daß ich alle drei Grafiken in ein wks bekomme...schon allein um den Nutzer das dreimalige Einstellen zu ersparen. Darauf bin ich noch gar nicht gekommen *schäm* ;-).

Das einzige, worüber ich jetzt nicht so ganz glücklich bin, ist die Vorstellung, daß nicht nur Auflösung und Druckqualität verändert werden können, sondern auch an den anderen Parametern herumgewurstelt wird. Aber damit muß ich wohl leben. Man soll den Nutzer ja nie unterschätzen *g*.

Vielen, vielen Dank!!!

(PS.: wenn s doch nicht klappt, nerve ich gleich wieder *drohend guck / g*)

Viele Grüße!

Björn

Anzeige
Re: SUPER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30.11.2002 17:01:57
M. Kuhn
Moin Björn,

freut mich sehr.

Wenn Dich der Usereingriff stört, lass Preview ganz weg. Bau Dir eine eigene Druckermaske (á la 'Qualität hoch-mittel-gering etc'). Der Trick: Du installierst den betreffenden Drucker mehrfach, stellst jeweils Qualität/Papierformat etc. fest ein und benennst ihn entsprechend, also z.B. 'HPLaserJet300dpi' und 'HPLaserJet600dpi' oder so. Und den jeweils vom User gewählten übergibst Du der PrintOut-Methode per Variable. Rückstellen nicht vergessen.

MfG Mario

Re: SUPER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30.11.2002 17:30:32
Björn
Huhu Mario ;-)

hmm...ich fürchte, daß das nicht geht. Zwar werden die meisten der Nutzer einen bestimmten Standard-Drucker verwenden. Aber eben nicht zwingend alle. Freilich könnte man den DruckerTyp per ActivePrinter abfragen und je nach Rückmeldung eine eigene oder die reguläre Printervorschau anbieten. Aber ich muß ganz ehrlich zugeben, daß ich gar nicht weiß, wie man den Drucker über VBA installiert - ? Ein Problem dürfte sein, daß die Drucker teilweise auch an ganz verschiedenen, eigenständigen Netzwerken uund damit ganz verschiedenen Servern hängen. Hmmmmm...ich denke, Dein Ursprungsvorschlag ist letztlich schon vertretbar. Seltsam wär's zwar schon *grins*, wenn ganz verschiedene Layout-Versionen von personalisierten Formularen herumkursierten. Aber es ist ohnehin nur eine Nachdruck-Option für verlorengegangene Sätze aus einer Masse von einigen 1000 Hochglanz-Originalen. Da geht es mehr um die Information als das Layout. Allerdings würde es mich durchaus interessieren, wie man per VBA auf die Druckereinstellungen zugreifen können soll. Danach habe ich nämlich schon mal gesucht, aber nur die Sendkey-Variante gefunden. Und die scheint mir ziemlich problematisch zu sein. Vielleicht könnte man auch in der Druckvorschau einzelne Schaltflächen deaktivieren? Aber ich denke, ich lasse es so. Ich hasse es als Nutzer selbst, wenn mich irgendein vermeintlicher wohlmeinender oder ein mißtrauischer Programmierer / Admin ausbremst. Nochmals vielen lieben Dank für den Tipp!!

Gruß

Björn

P.S.: Warum läßt sich die Preview eigentlich aufrufen, dagegen nicht ein einzelnes wks auswählen??? Seltsam.



Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige