Hallo liebe Wissende,
ich habe „forsche“ gerade daran einer Combobox in einer Userform zu sagen, das ihr der Druckername als default zugeordnet werden soll, der in seinem Name „PDF“ enthaelt, so das es also mit verschiedenen PDF-Druckern funktioniert. Die liste der installierten drucker wird mit folgendem Code ausgelesen:
Public Function GetPrinters(DieCombo As MSForms.ComboBox) As Boolean
Dim longbuffer() As Long ’ resizable array receives information from the function
Dim numbytes As Long ’ size in bytes of longbuffer()
Dim numneeded As Long ’ receives number of bytes necessary if longbuffer() is too small
Dim numprinters As Long ’ receives number of printers found
Dim c As Integer, retval As Long ’ counter variable & return value
Dim sTemp As String
DieCombo.Clear
numbytes = 3076 ’ should be sufficiently big, but it may not be
ReDim longbuffer(0 To numbytes / 4) As Long ’ resize array – note how 1 Long = 4 bytes
retval = EnumPrinters(PRINTER_ENUM_LOCAL, „“, 1, longbuffer(0), _
numbytes, numneeded, numprinters)
If retval = 0 Then ’ try enlarging longbuffer() to receive all necessary information
numbytes = numneeded
ReDim longbuffer(0 To numbytes / 4) As Long ’ make it large enough
retval = EnumPrinters(PRINTER_ENUM_LOCAL, „“, 1, _
longbuffer(0), numbytes, numneeded, numprinters)
If retval = 0 Then ’ failed again!
GetPrinters = False
Exit Function
End If
End If
If numprinters 0 Then ReDim printinfo(0 To numprinters - 1) As PRINTER_INFO_1
GetPrinters = True
For c = 0 To numprinters - 1 ’ loop, putting each set of information into each element
sTemp = Space(lstrlen(longbuffer(4 * c + 2)))
retval = lstrcpy(sTemp, longbuffer(4 * c + 2))
DieCombo.AddItem sTemp
Next c
End Function
********
in die beiden Combobox kommt dann bei userform initialisierung das:
Public Sub UserForm_Initialize()
Dim i As Long
If GetPrinters(ComboBox4) = False Then
MsgBox „No Printers installed“, vbExclamation
Exit Sub
End If
For i = 0 To ComboBox4.ListCount - 1
If GetDefaultPrinter Like ComboBox4.List(i) & „*“ Then ’ Etwas gemurkst aber was solls
ComboBox4.ListIndex = i
Exit For
End If
Next i
If GetPrinters(ComboBox2) = False Then
MsgBox „No Printers installed“, vbExclamation
Exit Sub
End If
For i = 0 To ComboBox2.ListCount - 1
If ActivePrinter Like ComboBox2.List(i) & „*“ Then ’ Etwas gemurkst aber was solls
ComboBox2.ListIndex = i
Exit For
End If
Next i
in ComboBox4 soll der Windows Default Printer (wird von einer anderen Funktion ausgelesen) und in die Combobox2 soll der jeweilig auf dem computer installierte PDF Drucker (also jener drucker der die Buchstaben PDF in seinem Namen enthaelt).
Ich bin ablsoluter VBA neuling und waehre fuer etwas hilfe sehr Dankbar (bastel schon 2Tage).
mfg Danny