Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
288to292
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
288to292
288to292
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Drucker auswählen Problem

Drucker auswählen Problem
31.07.2003 15:04:06
Christian Grob
Hallo
ich hab schon geforscht und kann über mein Excelsheet ein Fensteraufpoppen lassen auf dem alle Drucker angezeigt werden.
Das Problem dabei ist, mein Drucker heißt "FreePDF". Das kommt.
Ich wähle das aus drücke akzeptieren und VBA sollte dann folgendes machen:
Application.ActivePrinter = variable_mit_druckerstring
Das funktioniert immer wenn ich an meine Auswahl noch " auf NE00:" anhänge, je nachdem. Ich würde jetzt gerne wissen ob es eine Möglichkeit gibt den Port mitrauszufinden, weil wenn das Sheet mal woanders genutzt wird oder sich die Ports verändern möchte ich nicht im Code rumschrauben müssen.
Diesen Dialogs möchte ich eigentlich nicht nutzen, weil in meiner eigenen Box das auswählbar sein soll.
Hat jemand eine Idee?
Vielen Dank im vorraus,
Chris.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ause dem API-Guide
31.07.2003 15:32:04
M;ichael Scheffler
Option Explicit
' Get information about all of the local printers using structure 1. Note how
' the elements of the array are loaded into an array of data structures manually. Also
' note how the following special declares must be used to allow numeric string pointers
' to be used in place of strings:
Private Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As Long) As Long
Private Declare Function EnumPrinters Lib "winspool.drv" Alias "EnumPrintersA" (ByVal flags As Long, ByVal name As String, ByVal Level As Long, pPrinterEnum As Long, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Const PRINTER_ENUM_LOCAL = &H2
Private Type PRINTER_INFO_1
flags As Long
pDescription As String
pName As String
pComment As String
End Type

Private Sub Printers()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim longbuffer() As Long  ' resizable array receives information from the function
Dim printinfo() As PRINTER_INFO_1  ' values inside longbuffer() will be put into here
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
' Get information about the local printers
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!
Debug.Print "Could not successfully enumerate the printes."
End  ' abort program
End If
End If
' Convert longbuffer() data into printinfo()
If numprinters <> 0 Then ReDim printinfo(0 To numprinters - 1) As PRINTER_INFO_1 ' room for each printer
For c = 0 To numprinters - 1  ' loop, putting each set of information into each element
' longbuffer(4 * c) = .flags, longbuffer(4 * c + 1) = .pDescription, etc.
' For each string, the string is first buffered to provide enough room, and then the string is copied.
printinfo(c).flags = longbuffer(4 * c)
printinfo(c).pDescription = Space(lstrlen(longbuffer(4 * c + 1)))
retval = lstrcpy(printinfo(c).pDescription, longbuffer(4 * c + 1))
printinfo(c).pName = Space(lstrlen(longbuffer(4 * c + 2)))
retval = lstrcpy(printinfo(c).pName, longbuffer(4 * c + 2))
printinfo(c).pComment = Space(lstrlen(longbuffer(4 * c + 3)))
retval = lstrcpy(printinfo(c).pComment, longbuffer(4 * c + 3))
Next c
' Display name of each printer
For c = 0 To numprinters - 1
Debug.Print "Name of printer"; c + 1; " is: "; printinfo(c).pName
Next c
End Sub


Anzeige
AW: Ause dem API-Guide
31.07.2003 16:05:23
Chris. Grob
Wow! Danke funzt super!
Den API Guide kenn ich noch nicht, danke für den Tip.
Ich habs noch nicht gerafft was passiert, aber am Strand bin ich schon!
Meinen besten Dank hierfür!
Chris

AW: Ause dem API-Guide
31.07.2003 16:13:16
Michael Scheffler
Hi Chris,
ich kann das Zeugs auch nur mit Erstaunen anwenden, aber im Guide gibt es immer was zu finden, wennn Excel nicht so will wie wir:-)
Gruß
Micha

AW: Ause dem API-Guide
31.07.2003 16:14:52
Chris. Grob
Ich werde mir das Teil auf jedenfall mal gemütlich zu Gemüte führen,
für sowas hab ich immer Platz aufm Rechner ;-)
Gruß
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige