Avatar billede dboleno Nybegynder
25. august 2001 - 03:59 Der 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?
Avatar billede xelor Nybegynder
25. august 2001 - 08:02 #1
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.
Avatar billede xelor Nybegynder
25. august 2001 - 08:03 #2
Det var så svaret......
25. august 2001 - 10:42 #3
Du kan altid starte makro båndoptageren, og så udskrive 1 side, hvor du vælger den printer du skal bruge, så bliver du foræret den rigtige kode.
Avatar billede janvogt Praktikant
25. august 2001 - 11:34 #4
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!
Avatar billede janvogt Praktikant
25. august 2001 - 11:56 #5
Excel vil altid tage standardprinteren, så eneste alternative løsning er at gå ind under kontrolpanelet og ændre standardprinteren.
Avatar billede janvogt Praktikant
25. august 2001 - 12:38 #6
Nu fandt jeg det andet spørgsmål ...... stillet af dig!

http://www.eksperten.dk/spm/98893

Jeg fastholder mit svar: Det kan ikke lade sig gøre :-|
Avatar billede dboleno Nybegynder
25. august 2001 - 13:00 #7
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?
Avatar billede bak Seniormester
25. august 2001 - 19:01 #8
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.
25. august 2001 - 19:10 #9
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.
25. august 2001 - 19:12 #10
tilgåes vil = tilgåes via !!!!
Avatar billede bak Seniormester
26. august 2001 - 00:02 #11
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.

26. august 2001 - 00:22 #12
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\"\"\"

KIDS - DON\'T DO THIS AT HOME !!!!!!!!!!!!!!!!
26. august 2001 - 00:34 #13
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

    Userform1.PrintForm
    KeyValue = \"Oprindelig printernavn/information\"
    wd.System.PrivateProfileString(FileName, Section, Key) = KeyValue

    Set wd = Nothing
End Sub
Avatar billede dboleno Nybegynder
26. august 2001 - 02:01 #14
til alle der har svaret, Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I dag 16:05 win 10 vil ikke boote Af bb69 i Windows
I dag 11:20 Lenovo x390 Af tobberjas i PC
I dag 10:14 Alder i Excel Af Nanarsi i Excel
I dag 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel
I går 21:35 Flash Player Af ErikHg i Andet software