Drucker (Spielereien)

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Re: Drucker (Spielereien)

#11

Beitrag von thowe »

Hallo Paul,

danke für deine aktive Teilnahme!

Sehr gut gefällt mir das "Abfangen" von PDF,Fax -> daran hatte ich nicht gedacht.
Jaja, KI kann was (kolletive Intelligenz...!)
Das Nutzen von UserForm_Activate() erscheint mir auch günstiger, wegen dem wiederholten Aufrufen... -> Gelle Heb :roll:

LG
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Drucker (Spielereien)

#12

Beitrag von d'r Bastler »

Moin Paul,

auch von mir ein Dankeschön für Deinen Beitrag, zu dem sich mir allerdings eine Frage aufdrängt: Dass man den per M$-Standard vorhandenen Faxdrucker ausklammert, kann ich so gut nachvollziehen, wie den Verzicht auf Buschtrommel oder Rauchzeichen. Fax ist einfach Mittelalter. Nicht so aber PDF, das sich prima zum "Druck per E-Mail" eignet.

Mein Hinter-Hirn heckt gerade noch die Idee aus, das DruckerMapping zum One-Klick-Verteiler auszubauen: Wie oben schon beschrieben an verschiedene Drucker, aber eben auch an E-Mail-Empfänger.

Warum grenzt Du diese so aufwändig aus? (aufwändig, weil es vermutlich einfacher wäre, per Select Case & Instr zu filtern, statt mit If...Or, aber das nur am Rande)

@thowe: Inzwischen habe ich auch Deinen NS verstanden ;-)

Schöne Grüße
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Drucker (Spielereien)

#13

Beitrag von d'r Bastler »

Moin thowe,

und noch 'ne Frage zum Thema: Du schlägst nicht zum ersten Mal vor, statt USF-Initialize ~Activate zu verwenden. Kannst Du bitte mal in vBastler-verständlicher Sprache erklären, worin Du den Vorteil siehst? will mal wieder was lernen ;-)

lg
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Drucker (Spielereien)

#14

Beitrag von d'r Bastler »

Moin Paul,

nachdem ich oben einen ersten Vorschlag gemacht hatte, habe ich mich noch mal mit Deinem Filter (keine PDF-Apps) beschäftigt. Inzwischen habe ich eine noch einfachere Lösung gefunden. Hier ein Snippet, das Fax-Fossilien aus der Liste der Drucker ausschließt:

Code: Alles auswählen

'Einlesen der Drucker in ComboBox
sKey = "Software\Microsoft\Windows NT\CurrentVersion\Devices"
oReg.EnumValues HKEY_current_user, sKey, aValues
For i = 0 To UBound(aValues)
    oReg.GetStringValue HKEY_current_user, sKey, aValues(i), sValue
    sEntry = aValues(i) & Replace(sValue, "winspool,", " auf ")
    If Right(sEntry, 1) <> ":" Then
        sEntry = sEntry & ":"
    End If
    iPos = InStr(sEntry, "Fax")
    If iPos <> 0 Then
        GoTo nix
    End If
    cbxPrinters.AddItem sEntry
nix:
Next i
Beachte die Zeilen 4 bis 7 von unten ;-) Der Code gehört ins Userform_Initialize
Viel Spaß damit! lg
Folgende Benutzer bedankten sich beim Autor d'r Bastler für den Beitrag:
thowe
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Re: Drucker (Spielereien) -Erweiterung 002 (Paul)

#15

Beitrag von thowe »

Hallo Heb

Das hier:

Code: Alles auswählen

iPos = InStr(sEntry, "Fax")
    If iPos <> 0 Then
        GoTo nix
    End If
Kann man kürzen auf:

Code: Alles auswählen

If InStr(sEntry, "Fax") Then GoTo nix
LG
Folgende Benutzer bedankten sich beim Autor thowe für den Beitrag:
d'r Bastler
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Drucker (Spielereien)

#16

Beitrag von d'r Bastler »

Clever!! Danke!

Dann kürze ich drei Zeile höher auch noch:

Code: Alles auswählen

If Instr(sEntry, ":") = False then sEntry = sEntry & ":") 'alternativ: Goto nix
wobei ich in meiner gerade auf dem Laubsägetisch befindlichen Version auch PDF-Apps rausschmeiße, die keinen Nexx:-Port haben. OneNote lässt sich über den Port nul ansprechen, was ja durchaus Sinn ergibt.
lg
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Paul1206
Beiträge: 11
Registriert: 29. Aug 2022, 20:22
Hat sich bedankt: 2 Mal
Danksagung erhalten: 10 Mal

Re: Drucker (Spielereien)

#17

Beitrag von Paul1206 »

Hallo Zusammen,

was macht ihr für Verrenkungen hier. Wenn euch die lange Ausschluss Zeile stört, dann packt doch einfach die auszuschließenden Strings in ein Array und klappert das Array einer kleinen Schleife ab. Das produziert dann aber unnötige Laufzeit.
Ausschnitt:

Code: Alles auswählen

    For Each objPrinter In colPrinters
        For i = 0 To UBound(arr)
            If objPrinter.Name = arr(i) Then
                k = k + 1
            End If
        Next i
        If k = 0 Then Me.Cbo_Druckertreiber.AddItem objPrinter.Name
        k = 0
    Next objPrinter
Ich selbst habe kein O365. Was mich eher interessiert würde, ob dies Ding da sauber läuft.

Gruß Uwe
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

Re: Drucker (Spielereien)

#18

Beitrag von d'r Bastler »

Moin Uwe,

nana, wer wird denn gleich von Verrenkungen sprechen, wenn man mal was vereinfacht? Ein Array wäre da auch wieder nur ein Umweg. Schlanker Code ist doch viel hübscher als adipöser :lol:

Ob der Code auch auf O365 läuft werde ich nicht testen. Ich habe genau keinen Drucker auf meinem Smartphone installiert und O365 ist auch nur geduldet, aber lange nicht genutzt. Das aber als Tipp an Dich: O365 z.B. für Android gibt's für lau im Netz.

Ich fokussiere mich auf XL-Versionen auf dem PC, die ich nicht abonnieren muss. Da sind die Möglichkeiten einfach vielfältiger und stabiler.

Vielleicht noch als Nachsatz: Oft werden in Foren Formeln vorgeschlagen, die mit ihren Verschachtelungen auf unglaublich viele Klammern kommen. Auch wenn es deutlich mehr Code ist, solche Themen in VBA zu lösen, als in einer Zelle, bevorzuge ich VBA - einfach der Übersichtlichkeit wegen. Endlose if...or...or...then haben da für mich darin aber dann den gleichen Charme. Hier habe ich das Thema vor kurzem schon mal aufgegriffen. Wobei Select Case schon eine elegantere Variante ist, als endlose ...

Liebe Grüße
Zuletzt geändert von d'r Bastler am 18. Jun 2024, 12:43, insgesamt 1-mal geändert.
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
Benutzeravatar
thowe
Beiträge: 209
Registriert: 12. Sep 2022, 16:57
Hat sich bedankt: 79 Mal
Danksagung erhalten: 67 Mal
Kontaktdaten:

Re: Drucker (Spielereien)

#19

Beitrag von thowe »

Hallo Uwe!

Ja läuft bei mir:

Microsoft Excel für Microsoft 365 MSO (Version 2310 Build 16.0.16924.20054) 64 Bit

lg
Paul1206
Beiträge: 11
Registriert: 29. Aug 2022, 20:22
Hat sich bedankt: 2 Mal
Danksagung erhalten: 10 Mal

Re: Drucker (Spielereien)

#20

Beitrag von Paul1206 »

Hallo Miteinander,

Danke für die Info, dass es mit O365 brauchbar bleibt. Muss ich mir also nichts neues Zusammenstellen.

Die Verrenkungen sind nicht böse oder wie auch immer gemeint.
Es ist eigentlich der kurze und schnellste Weg zum Ziel dies schlicht in einer And Abfrage zu machen.
Wenn es um Lesbarkeit oder Einfachheit zum Anpassen für unbedarfte Mitbürger geht, ist es mit Array und Schleife am nachvollziehbarsten aber nicht mehr so effizient (eine weitere Schleife). InStr() kann in ungünstigen Konstellationen zu Auswertungsfehlern führen.

Was den philosophischen Kram If/Else/End If vs. Select Case anlangt, ist meine Devise Lesbarkeit und Kürze. Danach entscheide ich, was ich da benutze. Ansonsten sind mir die Diskussionen um dieses Thema ziemlich egal.

Ansonsten ist es halt jeden seine eigene Sache was er wie zusammenstellt. Geheimcode ist das ja alles nicht.

Viel Spaß beim Basteln

Gruß Uwe
Folgende Benutzer bedankten sich beim Autor Paul1206 für den Beitrag:
d'r Bastler
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast