Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Application.ActivePrinter

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Application.ActivePrinter (16452 mal gelesen)
Martin_0103
Mitglied



Sehen Sie sich das Profil von Martin_0103 an!   Senden Sie eine Private Message an Martin_0103  Schreiben Sie einen Gästebucheintrag für Martin_0103

Beiträge: 181
Registriert: 05.02.2003

3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3

erstellt am: 13. Mrz. 2007 14:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Zusammen,
ich habe vor einiger Zeit folgendes Macro erstellt:

Code:
Sub freepdfdrucken()

    Range("A1").Select
    Application.ActivePrinter = "FreePDF XP auf Ne02:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "FreePDF XP auf Ne02:", Collate:=True
End Sub


Es funktioniert super auf meinem PC. Auf einem Anderen jedoch nicht!
Folgende Fehlermeldung erscheint:

Laufzeitfehler 1004:
Die Methode 'ActivePrinter' für das Objekt '_Application' ist fehlgeschlagen

Geh ich auf Debuggen wird die Zeile: Application.ActivePrinter = "FreePDF XP auf Ne02:"  gelb markiert.

Die Rechner sind "normal" identisch - der FreePDF XP Drucker existiert auch - ein manuelles Drucken funktioniert! Steh voll auf dem Schlauch... 

Danke für die Hilfe
Gruß Martin

------------------
Wenn man einen Hund so dressiert hat, dass er über einen See fliegt, dann gibt es sicher ein paar Neider die das Tier für Wasserscheu halten...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Oberli Mike
Ehrenmitglied V.I.P. h.c.
Dipl. Maschinen Ing.



Sehen Sie sich das Profil von Oberli Mike an!   Senden Sie eine Private Message an Oberli Mike  Schreiben Sie einen Gästebucheintrag für Oberli Mike

Beiträge: 3728
Registriert: 29.09.2004

Excel 2010
128GB SSD
Windows 7

erstellt am: 13. Mrz. 2007 14:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Martin_0103 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Martin_0103:
Application.ActivePrinter = "FreePDF XP auf Ne02:"

Zeichne das Makro mal auf einem anderen PC auf, und du wirst sehen,
dass das Ne02 sich ändern wird......

hab aber keine Ahnung wieso, und wie man es ändern kann.

Hab für diesen Zweck, als ich es brauchte eine Abfrage durchlaufen lassen, welche von 01 bis xx lief, und prüfte ob es richtig ist, um dann die richtig Nummer einzugeben.

Würde mich auch freuen, wenn es eine einfachere Lösung gibt.


Hier mal mein Makro um den Drucker umzustellen.

***************************************************
Sub Drucker_umstellen()

anz = 0
   
For anz = 1 To 20
   
    On Error GoTo 0
    On Error Resume Next
    Err.Clear
   
    If anz < 10 Then
        Application.ActivePrinter = _
            "\\BUSS\PRLJPZ-1102.PRT.PR.BUSS auf Ne0" & anz & ":"
        Else
        Application.ActivePrinter = _
            "\\BUSS\PRLJPZ-1102.PRT.PR.BUSS auf Ne" & anz & ":"
        End If
    Next anz

Drucker = Application.ActivePrinter
If Left(Drucker, 18) <> "\\BUSS\PRLJPZ-1102" Then
    MsgBox ("Drucker nicht umgestellt")
    End If
   
End Sub
***********************************************************
anschliessend kann man einfach mit den aktuellen Drucker ausdrucken.

Gruss
Mike

------------------

The Power Of Dreams Schreib mal wieder

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 13. Mrz. 2007 14:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Martin_0103 10 Unities + Antwort hilfreich

Hallo,

"Application.ActivePrinter" liefert bei mir den Standarddrucker. Ist das jeweils der gleiche auf beiden Rechnern?

[thedit] Ich war wohl etwas voreilig, da ihr ja beide zuweist und nicht abfragt - darauf bezieht sich meine Zeile oben. Allerdings meine ich, eine zweifache Zuweisung herauszulesen? Ungetestet lese ich bei Martin

Code:
...
Application.ActivePrinter = "FreePDF XP auf Ne02:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="FreePDF XP auf Ne02:", C...
und frage mich, ob das erforderlich ist? Der ActivePrinter ist doch nach der ersten Zeile schon klar? Nur so am Rande...

Solange es sich nicht um 1.000 Rechner handelt, würde ich den Macro-Recorder auf der anderen Kiste anwerfen und sehen, was dann drinsteht; oder auf Nepumuks Beitrag verweisen, siehe unten ;-). [/thedit]

Gruß,
Frederik

[Diese Nachricht wurde von Paulchen am 13. Mrz. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 13. Mrz. 2007 15:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Martin_0103 10 Unities + Antwort hilfreich

Hallo Martin,

so kommst du an deine Drucker:

Code:
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 = 32&

Private strPrinterNames(MAX_PRINTERS) As String
Private strPrinterDrivers(MAX_PRINTERS) As String
Private strPrinterPorts(MAX_PRINTERS) As String
Private intPrinterCount As Integer

Public Sub prcGetPrinterList()
    Dim strBuffer As String
    Dim intIndex  As Integer
    strBuffer = Space$(&H2000)
    GetProfileString "PrinterPorts", vbNullString, "", _
        strBuffer, Len(strBuffer)
    prcGetPrinterNames strBuffer
    prcGetPrinterPorts
    For intIndex = 0 To intPrinterCount - 1
        Debug.Print strPrinterNames(intIndex), _
            strPrinterPorts(intIndex), _
            strPrinterDrivers(intIndex)
    Next
End Sub

Private Sub prcGetPrinterNames(ByVal strBuffer As String)
    Dim intIndex As Integer
    Dim 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
    Dim intIndex As Integer
    For intIndex = 0 To intPrinterCount - 1
        strBuffer = Space$(&H400)
        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
    Dim 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


------------------
Gruß
Nepumuk 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Martin_0103
Mitglied



Sehen Sie sich das Profil von Martin_0103 an!   Senden Sie eine Private Message an Martin_0103  Schreiben Sie einen Gästebucheintrag für Martin_0103

Beiträge: 181
Registriert: 05.02.2003

3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3

erstellt am: 13. Mrz. 2007 16:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die Antworten...
@:Nepumuk
WOW ... ich muss schon sagen, so viele Zeilen erschlagen mich! Ich vergaß zu sagen, dass ich von VBA keine Ahnung habe! Mein bischen Wissen hab ich mir zusammen kopiert! Die Exceltabelle soll lediglich mittels dem Makro auf jedem PC mit dem "FreePDF XP Drucker" gedruckt werden. Gibt es da etwas einfaches, bzw. wohin mit den Zeilen?

Gruß Martin

------------------
Wenn man einen Hund so dressiert hat, dass er über einen See fliegt, dann gibt es sicher ein paar Neider die das Tier für Wasserscheu halten...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 13. Mrz. 2007 16:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Martin_0103 10 Unities + Antwort hilfreich

Hallo Martin,

ist doch ganz einfach, nur die eine Routine ein bisschen angepasst:

Code:
Public Sub prcGetPrinterList()
    Dim strBuffer As String
    Dim intIndex  As Integer
    Dim blnFound As Boolean
    strBuffer = Space$(&H2000)
    GetProfileString "PrinterPorts", vbNullString, "", _
        strBuffer, Len(strBuffer)
    prcGetPrinterNames strBuffer
    prcGetPrinterPorts
    For intIndex = 0 To intPrinterCount - 1
        If strPrinterNames(intIndex) = "FreePDF XP" Then
            Application.ActivePrinter = strPrinterNames(intIndex) & " auf " _
                & strPrinterPorts(intIndex)
            blnFound = True
            Exit For
        End If
    Next
    If Not blnFound Then MsgBox "Drucker nicht gefunden", vbExclamation, "Hinweis"
End Sub

Zitat:
Ich vergaß zu sagen, dass ich von VBA keine Ahnung habe!

Wie kommst du dann auf die Idee VBA zu benutzen? Ich habe keine Ahnung vom Spaceshuttlefliegen. Darum würde ich das auch nie machen, selbst wenn ich eines in der Garage stehen hätte. 

------------------
Gruß
Nepumuk 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Oberli Mike
Ehrenmitglied V.I.P. h.c.
Dipl. Maschinen Ing.



Sehen Sie sich das Profil von Oberli Mike an!   Senden Sie eine Private Message an Oberli Mike  Schreiben Sie einen Gästebucheintrag für Oberli Mike

Beiträge: 3728
Registriert: 29.09.2004

Excel 2010
128GB SSD
Windows 7

erstellt am: 13. Mrz. 2007 17:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Martin_0103 10 Unities + Antwort hilfreich

Hallo Nepumuk,

Genau wie Martin hab ich auch mal angefangen.

Ein Makro in Excel aufgezeichnet, geschaut wie der Quelltext aussieht, andere Makros analysiert und so weiter.

Ist doch schön wenn jemand sich in ein solches Thema einfinden will.

BTW: Es genügend User, welche es nicht hinbekommen ein PDF zu erstellen (PDF ist natürlich installiert). Wir haben auch solche
in der Firma. Somit kann ich die Überlegung von einem Makro verstehen.

Gruss
Mike

------------------

The Power Of Dreams Schreib mal wieder

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Martin_0103
Mitglied



Sehen Sie sich das Profil von Martin_0103 an!   Senden Sie eine Private Message an Martin_0103  Schreiben Sie einen Gästebucheintrag für Martin_0103

Beiträge: 181
Registriert: 05.02.2003

3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3

erstellt am: 14. Mrz. 2007 07:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

 
Zitat:
Original erstellt von Nepumuk:
Hallo Martin,

ist doch ganz einfach, nur die eine Routine ein bisschen angepasst:

Wie kommst du dann auf die Idee VBA zu benutzen? Ich habe keine Ahnung vom Spaceshuttlefliegen. Darum würde ich das auch nie machen, selbst wenn ich eines in der Garage stehen hätte.   


Hallo Nepumuk,
herzlichen Dank für die Anpassung, werde sie später versuchen. Über Deinen Vergleich mit dem "Fliegen" mußte ich herzhaft lachen... und das am frühen Morgen       ich denke aber mal, wenn es in Deiner Garage stehen würde - würdest Du es sicherlich mal brummen lassen.
Danke nochmals...

Ergänzung: Das Makro hängt sich mit der Zeile auf:

GetProfileString      -> Fehler beim Kompilieren !?


Gruß Martin

------------------
Wenn man einen Hund so dressiert hat, dass er über einen See fliegt, dann gibt es sicher ein paar Neider die das Tier für Wasserscheu halten...

[Diese Nachricht wurde von Martin_0103 am 14. Mrz. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 14. Mrz. 2007 17:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Martin_0103 10 Unities + Antwort hilfreich

Hallo Martin,

du benötigst alle Routinen aus meiner ersten Antwort. Nur die eine angepasste musst du tauschen.

------------------
Gruß
Nepumuk 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz