Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Code anpassen!
#1
Hallo liebe Excelgemeinde,


ich habe eine Code mit dem ich einen Etikettendrucker ansteuern kann und Labels ausdrucken kann aus Excel. Danach stellt sich der Drucker wieder auf dem Standarddrucker zurück:

Code:
Sub label_druckallgemein()
   Dim i As Integer
   Dim AltDrucker As String
   Dim NeuDrucker As String
   NeuDrucker = "\\xxxxxxxxxx\yyyyyyyyyyy auf Ne10:"
   AltDrucker = ActivePrinter
   Application.ActivePrinter = NeuDrucker
   If Cells(6, 13).Value = "" Then
       MsgBox "Bitte Start-Wert angeben"
       Exit Sub
   End If
   If Cells(6, 14).Value = "" Then
       MsgBox "Bitte End-Wert angeben"
       Exit Sub
   End If
   
   For i = Cells(6, 13).Value To Cells(6, 14).Value
   x = Cells(8, 14).Value
       'If i < 10 Then
       
       'Cells(19, 8).Value = i
       'ActiveSheet.PrintOut 'wenn nach jedem hochzählen gedruckt werden sool, dass Hochkomma am Anfang dieser Zeile entfernen
'Else
        Cells(19, 6).Value = i
        ActiveSheet.PrintOut Copies:=x 'wenn nach jedem hochzählen gedruckt werden sool, dass Hochkomma am Anfang dieser Zeile entfernen

' End If
   Next i
   Application.ActivePrinter = AltDrucker
End Sub


Das funktioniert super, allerdings nur bei mir, denn die Datei ist im Netzwerk und wenn meine Kollegen das nutzen möchten, dann kommt immer "Laufzeitfehler 1004. Die Methode Active Printer für das Objekt _Application ist fehlgeschlagen".
Ich nehme an, das legt an de Port NE10, weil bei den Kollegen sind es andere Ports, aber wie muss der Code geändert werden, damit alle damit arbeiten können?


Für eure Hilfe danke ich im Voraus
VG
Alexandra
Antwortento top
#2
Code:
Sub M_snb()
  c00 = ActivePrinter
  Application.ActivePrinter = F_findprinter("Laserjet 1010")
 
  ThisWorkbook.Sheets(1).PrintOut
 
  ActivePrinter = c00
End Sub

Function F_findprinter(c01)
  For Each pr In CreateObject("Wscript.network").EnumPrinterConnections
    If InStr(LCase(pr), LCase(c01)) Then Exit For
  Next
  F_findprinter = pr
End Function
Antwortento top
#3
Hallo snb,


vielen Dank für dein Antwort, leider kann ich nicht viel damit anfangen (habe nicht wirklich viel Ahnung von VBA)! :(
Könntest du das evtl. in mein Code einbauen?


Vielen Dank im Voraus
VG
Alexandra
Antwortento top
#4
Hallo Alexandra,

Du brauchst die Unktion und eine Zeile Code. In der einen Zeile musst Du Deinen Druckernamen einsetzen.

Code:
Function F_findprinter(c01)
  For Each pr In CreateObject("Wscript.network").EnumPrinterConnections
    If InStr(LCase(pr), LCase(c01)) Then Exit For
  Next
  F_findprinter = pr
End Function

Sub label_druckallgemein()
    Dim i As Integer
    Dim AltDrucker As String
    Dim NeuDrucker As String
    AltDrucker = ActivePrinter
    Application.ActivePrinter = F_findprinter("Laserjet 1010") 'Hier den Druckernamen eingeben
    If Cells(6, 13).Value = "" Then
        MsgBox "Bitte Start-Wert angeben"
        Exit Sub
    End If
    If Cells(6, 14).Value = "" Then
        MsgBox "Bitte End-Wert angeben"
        Exit Sub
    End If
    
    For i = Cells(6, 13).Value To Cells(6, 14).Value
    X = Cells(8, 14).Value
         Cells(19, 6).Value = i
         ActiveSheet.PrintOut Copies:=X 'wenn nach jedem hochzählen gedruckt werden sool, dass Hochkomma am Anfang dieser Zeile entfernen
    Next i
    Application.ActivePrinter = AltDrucker
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#5
Hallo Andre,


die Function funktioniert, der Code findet den Drucker (habe das in Einzelschrift mit F8 getestet) und springt auf End Function.
Dann bleibt aber der code immer an der Stelle stehen:

     Application.ActivePrinter = F_findprinter("Zebra") 'Hier den Druckernamen eingeben

Fehlermeldung:

Laufzeitfehler 1004. Die Methode Activeprinter  für das Objekt Application ist fehlgeschlagen!

Was kann das sein?


Vielen Dank im Voraus
Alexandra
Antwortento top
#6
Hallo Alexandra

siehe mal hier: http://www.office-loesung.de/ftopic112051_0_0_asc.php

Gruß Uwe
Antwortento top
#7
Hallo Uwe,


danke für den Link, das geht dann wieder in eine andere Richtung! Ich blick das einfach nicht! :(


Kann mir jemand helfen und mir den vorhanden Code entprechend anpassen?



Vielen lieben Dank im Voraus
VG
Alexandra
Antwortento top
#8
Hallo Alexandra,

ich versuche es mal mit einer ganz einfachen Variante, bei der der Benutzer den Drucker einfach selbst auswählt:

Code:
Sub label_druckallgemein_Kuwer()
  Dim i As Integer
  Dim AltDrucker As String
  
  If Cells(6, 13).Value = "" Then
      MsgBox "Bitte Start-Wert angeben"
      Exit Sub
  End If
  If Cells(6, 14).Value = "" Then
      MsgBox "Bitte End-Wert angeben"
      Exit Sub
  End If
  
  AltDrucker = ActivePrinter
  If Application.Dialogs(xlDialogPrinterSetup).Show Then
    'MsgBox "Drucker ausgewählt"
    For i = Cells(6, 13).Value To Cells(6, 14).Value
      x = Cells(8, 14).Value
      'If i < 10 Then
        'Cells(19, 8).Value = i
        'ActiveSheet.PrintOut 'wenn nach jedem hochzählen gedruckt werden sool, dass Hochkomma am Anfang dieser Zeile entfernen
      'Else
        Cells(19, 6).Value = i
        ActiveSheet.PrintOut Copies:=x 'wenn nach jedem hochzählen gedruckt werden sool, dass Hochkomma am Anfang dieser Zeile entfernen
      'End If
    Next i
    Application.ActivePrinter = AltDrucker
  End If
End Sub

Gruß Uwe
Antwortento top
#9
Hallo Uwe,


funktioniert schon mal sehr gut die einfache Variante!! ::)
Danke dafür!

Es wäre natürlich ein Traum wenn das Direkt gehen würde, ohne dass man den Drucker extra noch manuell auswählen muss!
Geht das?


Vielen lieben dank
VG
Alexandra
Antwortento top
#10
Na geh, Dodgy

Schau mal hier:  http://www.clever-excel-forum.de/thread-...l#pid44196
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste