25. august 2001 - 03:59Der er
13 kommentarer og 1 løsning
Uskrift af formular på en andenprinter end windows standard printer
Jeg prøver igen:
Kommandoen userform1.PrintForm skriver userform1 ud på windows standard printeren. Er der en der kan levere et styke kode, så jeg også kan få skrevet formularen ud på en anden printer?
Med funktionen \'Application.Activeprinter \' kan du sætte en ny aktiv printer. Den skal have en tekststreng som input for at sætte en ny printer som den aktive printer. Prøv først at skifte til den printer, du vil bruge og kør \'MsgBox Application.ActivePrinter\' for at se, hvad printernavnet er. Siden kan du bruge funktionen til at sætte en ny aktiv printer.
Der har for nylig været et tilsvarende spørgsmål oppe på Eksperten. Den foreløbige konklussion er, at det kan ikke lade sig gøre at udskrive en userform på en anden printer - heller ikke ved hjælp af Application.Activeprinter.
Så svaret er sandsynligvis: Det kan ikke lade sig gøre, desværre!
til janvogt - du har sikkert ret. Jeg har en ide, en husmand, som jeg ikke kan få til at virke. Kalde kixstrt via en shell-kommando og lade den fremmede applikation sætte standardprinteren. Nu er jeg umådeligt grøn i kixstrt. Men der var måske en der kunne?
Standardprinter ligger i win.ini. \'device=OKIDATA OKIPAGE 4w,VHSDGDI,LPT1:
En mulighed er at lade excel åbne denne og udskifte linien inden udskrift og tilbage efter udskrift. En anden er at lave en kopi af win.ini men med den anden printer isat. Inden udskrift så få excel til at omdøbe originalen og kalde kopien win.ini. Efter udskrift skal man så lave det samme nummer igen.
win.ini og andre ini-filer kan f.eks. tilgåes vil System.PrivateProfileString \"Section\", \"Key\" Det synes umiddelbart ikke at findes i Excel, men der kan linkes til Word, hvor ovenstående kommando findes.
Det her kan sikkert gøres smartere af eksperterne men det skifter standardprinter og det virker. forberedelser: 1. lav en kopi af nuværende win.ini og kald den rigtig.ini 2. vælg en anden printer som stdprinter, lav kopi af win.ini og kald den falsk.ini 3. skift til normal stdprinter igen. kode: Private Sub Frame1_Click() Open \"c:\\windows\\falsk.ini\" For Input As #1 Open \"c:\\windows\\win.ini\" For Output As #2 Do Until EOF(1) Line Input #1, textline Print #2, textline Loop Close 1 Close 2 UserForm1.PrintForm Open \"c:\\windows\\rigtig.ini\" For Input As #1 Open \"c:\\windows\\win.ini\" For Output As #2 Do Until EOF(1) Line Input #1, textline Print #2, textline Loop Close 1 Close 2 End Sub
hermed skifter printeren til ny stdprinter når formen udskrives og tilbage igen.
bak>> ja, det virker, men det går nok under kategorien af \"de mest Uhensigtsmæssige løsninger\" - win.ini og andre ini-filer er under konstant ændring, og dine \"kopi-filer\" kan være for gamle efter et enkelt opstart af pc\'er, hvorfor din rutine vil sætte indstillingerne tilbage til \"\"\"stenalderen\"\"\"
Private Sub cmdPrint_Click() Dim wd As New Word.Application Dim FileName As String: FileName = \"C:\\windows\\win.ini\" Dim Section As String: Section = \"windows\" Dim Key As String: Key = \"device\" Dim KeyValue As String: KeyValue = \"Navnet på din printer\" \'Husk at kigge på hvordan win.ini ser ud, alt efter hvilken printer du har tilknyttet, så du kan se rigtigt. wd.System.PrivateProfileString(FileName, Section, Key) = KeyValue
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.