• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Lijst printers

Status
Niet open voor verdere reacties.

jvandervliet

Gebruiker
Lid geworden
23 mrt 2006
Berichten
234
Hallo,

In een werkblad wil ik een lijst met beschikbare printers laten zien en dan kunnen selecteren om daarmee bepaalde afdrukbereik af te drukken. Bijvoorbeeld de factuur naar de Kyocera en het adres naar de Dymo Labelwriter.

Dat werkblad gebruiken we op verschillende pc's de printers zijn anders. Dus moeten we selecteren welke printer wat afdruk.

Idee is 2 keuzelijsten te maken met de printers er in. Keuzelijst 1 printen van factuur en keuzelijst 2 voor het adres.
 
Ik vond deze macro op de site van Microsoft:
Code:
Sub ShowPrinters() 
    Dim strCount As String 
    Dim strMsg As String 
    Dim prtLoop As Printer 
     
    On Error GoTo ShowPrinters_Err 
 
    If Printers.Count > 0 Then 
        ' Get count of installed printers. 
        strMsg = "Printers installed: " & Printers.Count & vbCrLf & vbCrLf 
     
        ' Enumerate printer system properties. 
        For Each prtLoop In Application.Printers 
            With prtLoop 
                strMsg = strMsg _ 
                    & "Device name: " & .DeviceName & vbCrLf _ 
                    & "Driver name: " & .DriverName & vbCrLf _ 
                    & "Port: " & .Port & vbCrLf & vbCrLf 
            End With 
        Next prtLoop 
     
    Else 
        strMsg = "No printers are installed." 
    End If 
     
    ' Display printer information. 
    MsgBox Prompt:=strMsg, Buttons:=vbOKOnly, Title:="Installed Printers" 
     
ShowPrinters_End: 
    Exit Sub 
     
ShowPrinters_Err: 
    MsgBox Prompt:=Err.Description, Buttons:=vbCritical & vbOKOnly, _ 
        Title:="Error Number " & Err.Number & " Occurred" 
    Resume ShowPrinters_End 
     
End Sub
Wellicht heb je er wat aan.
 
Compileerfout:

Een door gebruiker gedefinieerde gegevenstype is niet gedefinieerd.

bij
Code:
Dim prtLoop As Printer
 
Ha Albert,

Dat is precies wat ik zocht. Alleen kan het niet uitvoeren vanwege de fout: De code in dit project moet worden bijgewerkt voor gebruik op 64-bits systemen.
 
Code:
Sub M_snb_printers()
  With CreateObject("Wscript.network")
    For j = 0 To .EnumPrinterConnections.Count - 1 Step 2
      MsgBox .EnumPrinterConnections(j + 1) & " on " & .EnumPrinterConnections(j)
    Next
  End With
End Sub
 
Heb de oplossing van AD1957 (waarvoor mijn hartelijke dank! )in mijn bestaande project doorgevoerd. Dat werkt perfect op Windows. Is er ook een Mac oplossing?
 
Ik heb hier op Helpmij wel vaker topics gelezen over VBA problemen met de MAC.
Of er een oplossing voor is weet ik niet.
Maar eens even afwachten of er iemand met meer VBA-kennis reageert.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan