Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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

Adresse eines Netzwerkdruckers suchen und nutzen

Adresse eines Netzwerkdruckers suchen und nutzen
emem2404
Hallo Leute,
ich habe ein Problem mit einem Makro, von dem ich dachte, dass ich es durch Eure Hilfe erledigt ist, da ich schon ein Script erhalten habe. Doch zunächst mein Problem:
Ich möchte ein verstecktes Tabellenblatt 2x auf dem Netzwerkdrucker "xyz123" ausdrucken. Von den unterschiedlichen PCs im Netzwerk geht es aber leider nicht, da der angesteuerter Drucker auf jedem Rechner eine andere Zuweisung hat, wie zum Beispiel:
Application.ActivePrinter = "\\XY1234\AB987 auf Ne03:" oder ... auf Ne05:" oder ... auf Ne02:" usw., usw.
Sheets("Lieferschein").Visible = True
Sheets("Lieferschein").PrintOut Copies:=2
Sheets("Lieferschein").Visible = False
Ich bräuchte somit erst ein Makro welches herausfindet, wie die Adresse des Druckers \\XY1234\AB987 auf dem gerade verwendeten PC lautet und diese Adresse dann entsprechend verwendet.
Rainer war so nett und hat mir folgendes Script zur Verfügung gestellt, welches ich in mein Makro eingearbeitet habe:
Dim i As Long
Dim pString As String
pString = "\\XY1234\AB987 auf Ne"
Application.displayalerts = false
On Error Resume Next
For i = 1 To 64
Application.ActivePrinter = "" & pString & Format(i, "00") & ":"
Next i
If InStr(1, Application.ActivePrinter, pString) = 0 Then
MsgBox "Der Drucker: " & pString & " existiert auf diesem Rechner nicht", vbOKOnly, " _
Fehler"
End If
On Error GoTo 0
Application.displayalerts = True
Sheets("Lieferschein").Visible = True
Sheets("Lieferschein").PrintOut Copies:=2
Sheets("Lieferschein").Visible = False

Erst dachte ich, dass es funktioniert, aber das war leider ein Irrtum.
Die nachfolgende Lösung von Bernd hat leider auch nicht funktioniert:
Sheets("Lieferschein").PrintOut Copies:=2, ActivePrinter:="\\XY1234\AB987"
Nun habe ich als Alternative das Script zur Auswahl des Druckers von Rudi genutzt:
Dim p, p1
p1 = ActivePrinter
p = Application.Dialogs(xlDialogPrinterSetup).Show
If p = False Then
Cancel = True
Exit Sub
End If
ActivePrinter = p1

Aber auch das steuert seltsamerweise, obwohl ich dort den richtigen Drucker auswählen kann, nur den Standarddrucker an.
Ich bin echt ratlos und kenne das gar nicht, dass es gar nicht hinzubekommen ist.
Hat noch jemand einen Tipp für mich?
Vielen Dank schon jetzt!
Gruß
MARTIN

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Adresse eines Netzwerkdruckers suchen und nutzen
02.09.2010 11:14:43
Rudi
Hallo,
du musst ja auch drucken bevor der Drucker wieder zurückgesetzt wird!
Dim p, p1
p1 = ActivePrinter
p = Application.Dialogs(xlDialogPrinterSetup).Show
If p = False Then
Cancel = True
Exit Sub
End If
With Sheets("Lieferschein")
.Visible = True
.PrintOut Copies:=2
.Visible = False
End With
ActivePrinter = p1

Gruß
Rudi
AW: Adresse eines Netzwerkdruckers suchen und nutzen
02.09.2010 16:51:31
emem2404
Hallo Rudi,
das mit der Auswahl funktioniert jetzt tatsächlich von allen PCs aus. danke dafür!
Aber ein Makro um genau diesen einen bestimmten Drucker im Netzwerk anzusteuern habe ich leider noch immer nicht.
Hat keiner von Euch Spezis eine Idee?
Danke!
Gruß
MARTIN
Anzeige
Adresse eines Netzwerkdruckers suchen
05.09.2010 12:20:15
Anton
Hallo Martin,
probier sowas:
Code:

Public Sub druckeradresse()  
  Dim oReg As Object, strKeyPath As String, drucker As String    
  Dim arrValueNames, strValue, druckeradresse
  Const HKEY_current_user = &H80000001
  drucker = "HP Deskjet F300 series" 'oder \\XY1234\AB987
  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(1, arrValueNames(i), drucker) <> 0 Then  
      druckeradresse = arrValueNames(i) & Replace(strValue, "winspool,", " auf ")
    End If  
  Next
  Set oReg = Nothing  
  MsgBox druckeradresse, vbInformation, "Druckeradresse"
End Sub  


mfg Anton
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige