Avatar billede p_gaard Juniormester
19. oktober 2005 - 09:26 Der er 8 kommentarer og
1 løsning

Combobox med printere

Hej,

Er der en som ved hvordan man i word (office xp) kan lave en lille form med en liste eller combobox bestående af de printere som er installeret i windows.

Jeg har fundet ud af at man ikke kan skrive "For each printer in Printers"

Mvh

Peter
Avatar billede rvm Nybegynder
19. oktober 2005 - 10:19 #1
Du kan ikke styre dine printere indenfor Word - og du kan heller ikke spørge på priterne - bortset fra den aktive printer. Jeg bruger noget i stil med dette, når jeg skal arbejde med printerne (hvor jeg må kende printernavnene på forhånd):

    Select Case ActivePrinter
        Case "Printernavn" ' optaget via makrooptageren, hvor du skifter mellem printeren, så du får deres navne
            With Options
                .DefaultTray = "Upper Paper Tray"
            End With
        Case "Printernavn2"
            With Options
                .DefaultTray = "Lower Paper Tray"
            End With
    End Select

Du kan dog også lave et API kald, hvor du spørger på printere, men du skal stadig selv sætte f.eks. papirbakkerne for de enkelte printere
Avatar billede p_gaard Juniormester
19. oktober 2005 - 12:51 #2
Jeg har nu lavet en dll i VB som kan kaldes fra word. Jeg får i word et lille vindue frem med en fin lille liste over printere som er installeret i windows. Mit problem er nu at få overført den valgte værdi til word efter afslutning af dll-filens form. Er det noget kode som skal placeres i klassemodulet eller i formen. Er der en som kan hjælpe?
Avatar billede rvm Nybegynder
19. oktober 2005 - 13:01 #3
Kan du ikke placere koden i et almindeligt modul i Word?
Avatar billede p_gaard Juniormester
19. oktober 2005 - 13:21 #4
Jeg kan ikke flytte koden til et modul i word. Du kan ikke i word sige 'for each printer in printers....'.

Koden til dll'filen ser ud som nedenstående og jeg har brug for at den valgte printer bliver returneret til det sted i word hvorfra den bliver kaldt.

I word ser min kode ud som:

dim x as visform.class1
set x=createobject("visform.class1")
prn=x



Koden som ligger i form1 i dll'en:

Private Sub Command1_Click()

  unload me

End Sub

Private Sub Form_Load()

  Dim pr As Printer


  For Each pr In Printers
      List1.AddItem pr.DeviceName
  Next pr


  List1.Text = Printer.DeviceName

End Sub



Koden som ligger i Class1 i dll'en:



Public Function visform()

  Form1.Show 1

End Function
Avatar billede rvm Nybegynder
19. oktober 2005 - 13:31 #5
Jeg har ikke prøvet at arbejde med dll'er før i forbindelse med Word... men du kunne eventuelt gemme valget i en textfil og derefter læse det ind i Word - bare et forslag :-)
Avatar billede rvm Nybegynder
19. oktober 2005 - 13:44 #6
Her er et link med en Word løsning:
http://word.mvps.org/FAQs/MacrosVBA/AvailablePrinters.htm
Avatar billede p_gaard Juniormester
19. oktober 2005 - 13:49 #7
Det så fint ud. Lige hvad jeg har ledt efter. TAK!
Avatar billede rvm Nybegynder
19. oktober 2005 - 14:01 #8
Jeg ved ikke hvorfor jeg ikke gik ind på den side med det samme - den ligger endda under mine Favoritter :-)
Avatar billede rvm Nybegynder
18. april 2006 - 14:41 #9
Hvis du er tilfreds med svaret må du gerne lukke spørgsmålet :-)
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
Kategori
Tag et kursus i Word og øg effektiviteten

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