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

Druckertreiber wählen

Druckertreiber wählen
03.04.2008 08:09:00
Mathias
Hallo,
habe folgenden Code, um ein PDF über FreePDF zu erstellen:
Application.ActivePrinter = "FreePDF XP - Rechnung auf Ne03:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"FreePDF XP - Rechnung auf Ne03:", Collate:=True
Dummerweise ändert sich manchmal die Bezeichnung "Ne03" in z.B. "Ne04" usw.
und das Makro hängt sich auf.
Wie kann ich den Code ändern, dass der Ausdruck unabhänig von diesen Änderungen wird
und immer der richtige Druckertreiber ausgewählt wird?
Viele Grüße
Mathias

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

Betreff
Datum
Anwender
Anzeige
AW: Druckertreiber wählen
03.04.2008 09:32:00
Renee
Hi Matthias,
Füge diese Funktion in ein Modul ein:

Public Function getPrinterName(sPartOfName As String) As String
Dim objNet As Object
Dim objPrinter As Object
Dim ix As Integer
Set objNet = CreateObject("WScript.Network")
Set objPrinter = objNet.EnumPrinterConnections
For ix = 0 To objPrinter.Count - 1 Step 2
If InStr(UCase(objPrinter.Item(ix + 1)), UCase(sPartOfName)) > 0 Then
getPrinterName = objPrinter.Item(ix + 1)
Exit Function
End If
Next
End Function


und ändere deinen Code so:


Application.ActivePrinter = getPrinterName("FreePDF XP") ....


GreetZ Renée

Anzeige
AW: Druckertreiber wählen
03.04.2008 14:59:18
Mathias
Hallo Renee,
danke für den Quellcode.
Hab ihn genauso eingebunden, aber leider bleibt Excel dabei hängen.
Da ich den Quellcode nicht so wirklich verstehe, find ich leider den Fehler nicht.
Viele Grüße
Mathias

AW: Druckertreiber wählen
03.04.2008 16:11:34
anton
Hallo Mathias,
versuch's mal damit:

Sub b()
  Const HKEY_current_user = &H80000001
  Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")  
  strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\Devices"
  oReg.EnumValues HKEY_current_user, strKeyPath, arrValueNames
  For i = 0 To UBound(arrValueNames)  
    oReg.GetStringValue HKEY_current_user, strKeyPath, arrValueNames(i), strValue  
    If InStr(UCase(arrValueNames(i)), "FREEPDF XP") > 0 Then    
      Application.ActivePrinter = arrValueNames(i) & Replace(strValue, "winspool,", " auf ")
    End If  
  Next
  Set oReg = Nothing  
  MsgBox Application.ActivePrinter
End Sub  

mfg Anton

Anzeige
AW: Druckertreiber wählen
03.04.2008 16:19:00
Mathias
Hallo Anton,
danke für den Tipp. Hab den Quellcode gespeichert.
In der Zwischenzeit habe ich jedoch schon folgende Lösung gefunden:

Function NeNumber(Druckername As String) As String
Dim Ne As String, Printer$, i%
Printer = Druckername  ' Achtung: Druckername auf Ne !!!
On Error Resume Next
For i = 1 To 99
Ne = Format(i, "00")
Err.Number = 0
Application.ActivePrinter = Printer & Ne & ":"
If Err.Number = 0 Then
NeNumber = Ne
Exit For
End If
Next
End Function


Viele Grüße
Mathias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige