Supportnet / Forum / Tabellenkalkulation
Druckeranschlussport "Adobe PDF auf Ne0x:" und Makro
Frage
Hallo erstmal,
ich habe Tabellenblätter, die per CommandButton gedruckt werden können. Einer der Buttons ist für den "Windows-Standarddrucker" und einer soll für PDF sein. Im Makro steht dann zur Druckerauswahl
Application.ActivePrinter = "Adobe PDF auf Ne02:"
Die Datei soll von mehreren Rechnern aus einem Netzwerk nutzbar sein. Auf allen ist der PDF-Treiber installiert. So weit - so gut...
Mein Problem ist jetzt folgendes: Nicht auf jedem Rechner ist der PDF-Treiber an "Ne02" installiert sondern auch mal an "Ne05:". (Das habe ich herausbekommen, nachdem es da eine Fehlermeldung gab und ich die Druckerauswahl per Makro aufgezeichnet habe..).
Meine Frage: Wie kann ich sicherstellen, dass mein Druckmakro zur PDF-Erzeugung an allen Arbeitsplätzen funktioniert???
Kann man vielleicht die Fehlermeldung abfangen und dann per Case-Anweisung alle Druckerports abklappern???
Oder wie kann ich an den einzelnen Arbeitsplätzen die Portzuweisung ändern??? Bei den Druckereigenschaften/Anschluß lässt sich nichts konfigurieren ("Für diesen Anschluss kann nichts konfiguriert werden.").
Jemand ´ne Idee????
Gruß René
Antwort 1 von coros
Hallo Rene,
mit nachfolgenden Makros wird Dir für einen vorgegebenen Drucker der Anschlußport ermittelt und dann auf dem Drucker ausgedruckt. Kopiere die Makros in ein StandardModul.
Du musst in dem Makro "Drucken" in der Zeile
den Druckernamen "DELL_5100cn" gegen den Druckernamen ändern, auf dessen Drucker Du ausdrucken möchtest. Dieses Makro muss dann auch ausgeführt werden, wenn gedruckt werden soll. Die anderen Makros dienen nur zum Finden des Druckeranschluss.
Wie der genaue Name des Druckers ist, siehst Du wenn Du in Excel auf "Datei => Drucken..." gehst und dort dann den Drucker in dem Auswahlmenü suchst und den Namen, der dort steht, in die besagte Zeile einträgst.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
mit nachfolgenden Makros wird Dir für einen vorgegebenen Drucker der Anschlußport ermittelt und dann auf dem Drucker ausgedruckt. Kopiere die Makros in ein StandardModul.
Option Explicit
Private Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" ( _
ByVal lpAppName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long) As Long
Private Const MAX_PRINTERS = 16
Private strPrinterNames(MAX_PRINTERS) As String
Private strPrinterDrivers(MAX_PRINTERS) As String
Private strPrinterPorts(MAX_PRINTERS) As String
Private intPrinterCount As Integer
Private Sub prcGetPrinterNames(ByVal strBuffer As String)
Dim intIndex As Integer, strName As String
intPrinterCount = 0
Do
intIndex = InStr(strBuffer, Chr(0))
If intIndex > 0 Then
strName = Left$(strBuffer, intIndex - 1)
If Len(Trim$(strName)) > 0 Then
strPrinterNames(intPrinterCount) = Trim$(strName)
intPrinterCount = intPrinterCount + 1
End If
strBuffer = Mid$(strBuffer, intIndex + 1)
Else
If Len(Trim$(strBuffer)) > 0 Then
strPrinterNames(intPrinterCount) = Trim$(strBuffer)
intPrinterCount = intPrinterCount + 1
End If
strBuffer = ""
End If
Loop While (intIndex > 0) And (intPrinterCount < MAX_PRINTERS)
End Sub
Private Sub prcGetPrinterPorts()
Dim strBuffer As String, intIndex As Integer
For intIndex = 0 To intPrinterCount - 1
strBuffer = Space$(1024)
GetProfileString "PrinterPorts", strPrinterNames(intIndex), "", _
strBuffer, Len(strBuffer)
prcGetDriverAndPort strBuffer, strPrinterDrivers(intIndex), _
strPrinterPorts(intIndex)
Next
End Sub
Private Sub prcGetDriverAndPort(ByVal Buffer As String, _
DriverName As String, Printerport As String)
Dim intDriver As Integer, intPort As Integer
DriverName = ""
Printerport = ""
intDriver = InStr(Buffer, ",")
If intDriver > 0 Then
DriverName = Left$(Buffer, intDriver - 1)
intPort = InStr(intDriver + 1, Buffer, ",")
If intPort > 0 Then
Printerport = Mid$(Buffer, intDriver + 1, _
intPort - intDriver - 1)
End If
End If
End Sub
Sub Drucken()
Dim Printerport As String, strBuffer As String, intIndex As Integer
strBuffer = Space$(8192)
GetProfileString "PrinterPorts", vbNullString, "", _
strBuffer, Len(strBuffer)
prcGetPrinterNames strBuffer
prcGetPrinterPorts
For intIndex = 0 To intPrinterCount
Debug.Print strPrinterNames(intIndex), _
strPrinterPorts(intIndex), _
strPrinterDrivers(intIndex)
If strPrinterNames(intIndex) = "DELL_5100cn" Then
Printerport = strPrinterNames(intIndex) & " auf " & strPrinterPorts(intIndex)
End If
Next
Application.ActivePrinter = Printerport
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
Printerport, Collate:=True
End SubDu musst in dem Makro "Drucken" in der Zeile
If strPrinterNames(intIndex) = "DELL_5100cn" Thenden Druckernamen "DELL_5100cn" gegen den Druckernamen ändern, auf dessen Drucker Du ausdrucken möchtest. Dieses Makro muss dann auch ausgeführt werden, wenn gedruckt werden soll. Die anderen Makros dienen nur zum Finden des Druckeranschluss.
Wie der genaue Name des Druckers ist, siehst Du wenn Du in Excel auf "Datei => Drucken..." gehst und dort dann den Drucker in dem Auswahlmenü suchst und den Namen, der dort steht, in die besagte Zeile einträgst.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Rene.N
Hallo Oliver,
vielen Dank für die schnelle Antwort.
Ich habe den Code gleich mal an meine Umgebung angepasst und ausprobiert. ... und siehe da, es funktioniert hervorragend!!!!
Jetzt hätte ich noch eine Kleinigkeit gewusst, die das Ausdrucken in ein PDF erleichtern würde:
Kann man (ähnlich wie bei "speichern unter" durch Application.GetSaveAsFilename([Zelle]) ) einen Dateinamen vorgeben, wie die PDF-Datei heissen soll??
Wenn das noch möglich wäre, ist die Bedienung perfekt!
Gruß René
vielen Dank für die schnelle Antwort.
Ich habe den Code gleich mal an meine Umgebung angepasst und ausprobiert. ... und siehe da, es funktioniert hervorragend!!!!
Jetzt hätte ich noch eine Kleinigkeit gewusst, die das Ausdrucken in ein PDF erleichtern würde:
Kann man (ähnlich wie bei "speichern unter" durch Application.GetSaveAsFilename([Zelle]) ) einen Dateinamen vorgeben, wie die PDF-Datei heissen soll??
Wenn das noch möglich wäre, ist die Bedienung perfekt!
Gruß René
Antwort 3 von coros
Hallo Rene,
das kann man so pauschal nicht sagen, da es davon abhängt, welches Programm zum Erstellen, bzw. Drucken in eine PDF-Datei, verwendet wird. Das ist bei jedem Programm anders.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
das kann man so pauschal nicht sagen, da es davon abhängt, welches Programm zum Erstellen, bzw. Drucken in eine PDF-Datei, verwendet wird. Das ist bei jedem Programm anders.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von Rene.N
Hallo Oliver,
zum PDF-Erzeugen kommt Adobe Acrobat zum Einsatz. Gibt es da bei den verschiedenen Releases auch noch Unterschiede?? (Das man auch andere Programme nutzen kann ist schon verständlich..., kommen aber hier nicht zum Einsatz)
Gruß René
zum PDF-Erzeugen kommt Adobe Acrobat zum Einsatz. Gibt es da bei den verschiedenen Releases auch noch Unterschiede?? (Das man auch andere Programme nutzen kann ist schon verständlich..., kommen aber hier nicht zum Einsatz)
Gruß René
Antwort 5 von coros
Hallo Rene,
sorry, da kann ich Dir nicht weiterhelfen, da ich kein Programm von Acrobat besitze um PDF-Dateien zu erzeugen. Ich nutze andere Software. Somit kenne ich die Befehle usw. nicht.
Tut mir leid.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
sorry, da kann ich Dir nicht weiterhelfen, da ich kein Programm von Acrobat besitze um PDF-Dateien zu erzeugen. Ich nutze andere Software. Somit kenne ich die Befehle usw. nicht.
Tut mir leid.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von Rene.N
Hallo Oliver,
is natürlich schade...
Falls kein anderer User sich melden sollte, werd ich morgen mal einen neuen Tread aufmachen...
Trotzdem besten Dank!
Die schwierigste und wichtigste Aufgabe ist ja durch dich zum Glück schon gelöst....
Gruß René
is natürlich schade...
Falls kein anderer User sich melden sollte, werd ich morgen mal einen neuen Tread aufmachen...
Trotzdem besten Dank!
Die schwierigste und wichtigste Aufgabe ist ja durch dich zum Glück schon gelöst....
Gruß René

