Ik probeer via vba een printer lade te kiezen in word 97 ( volgens MS KB Q194789 ). Dit gaat bij de meeste users goed, maar 1 user heeft een printer die een lade heeft met een naam die langer dan 24 characters is. Hierbij krijg ik consequent een foutmelding van vba over een unknown function en er wordt niks geprint. De bedoeling is om in een huisstijl een standaard printer en lade per gebruiker per type brief in word te hebben ( in lade 2 ( of tray 2 ) indien engels zit altijd het logo papier ) dus probeer ik eerst alle ladenndamen te krijgen via onderstaande code, en zoek daarin of naar lade 2 of naar tray 2.
Ik heb al geprobeerd om alle 24's te veranderen naar 50. Maar nu worden de printerladen helemaal niet goed meer herkend.
Op Google kan ik hier niets over vinden, net zomin als op MS KB
En als ik MS KB mag geloven denk ik niet dat het toegestaan is om dan 24 tekens in de naam van een printerlade te stoppen, maar het gebeurt toch...
Iemand die hier een oplossing voor weet ( behalve printerdriver veranderen, want het moet een redelijk generiek vba progje worden en ik kan niet van iedereen eisen dat ze andere printerdrivers gebruiken )
OS is trouwens win98
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| Public Function GetBinNames() As Variant
'Code adapted from Microsoft KB article Q194789
'HOWTO: Determine Available PaperBins with DeviceCapabilities API
Dim iBins As Long
Dim ct As Long
Dim sNamesList As String
Dim sNextString As String
Dim sPort As String
Dim sCurrentPrinter As String
Dim vBins As Variant
'Get the printer & port name of the current printer
sPort = Trim$(Mid$(ActivePrinter, InStrRev(ActivePrinter, " ") + 1))
sCurrentPrinter = Trim$(Left$(ActivePrinter, _
InStr(ActivePrinter, " on ")))
'Find out how many printer bins there are
iBins = DeviceCapabilities(sCurrentPrinter, sPort, _
DC_BINS, ByVal vbNullString, 0)
'Set the string to the right size to hold all the bin names
'[b]24 chars [/b]per name
sNamesList = String(24 * iBins, 0)
'Load the string with the bin names
iBins = DeviceCapabilities(sCurrentPrinter, sPort, _
DC_BINNAMES, ByVal sNamesList, 0)
'Set the array of bin names to the right size
ReDim vBins(0 To iBins - 1)
For ct = 0 To iBins - 1
'Get each bin name in turn and assign to the next item in the array
sNextString = Mid(sNamesList, 24 * ct + 1, 24)
vBins(ct) = Left(sNextString, InStr(1, sNextString, Chr(0)) - 1)
Next ct
'Return the array to the calling routine
GetBinNames = vBins
End Function |
Ik heb al geprobeerd om alle 24's te veranderen naar 50. Maar nu worden de printerladen helemaal niet goed meer herkend.
Op Google kan ik hier niets over vinden, net zomin als op MS KB
En als ik MS KB mag geloven denk ik niet dat het toegestaan is om dan 24 tekens in de naam van een printerlade te stoppen, maar het gebeurt toch...
Iemand die hier een oplossing voor weet ( behalve printerdriver veranderen, want het moet een redelijk generiek vba progje worden en ik kan niet van iedereen eisen dat ze andere printerdrivers gebruiken )
OS is trouwens win98
[ Voor 6% gewijzigd door Gomez12 op 22-07-2005 16:25 . Reden: Bold werkt niet in code vlakken :) ]