Avatar billede ebech Nybegynder
26. maj 2003 - 10:46 Der er 4 kommentarer og
1 løsning

Word: Macro ved print

Kan man i Word/VB lave en macro der automatisk eksekveres når der printes fra word applikationen.
Avatar billede jkrons Professor
26. maj 2003 - 11:01 #1
En makro, der hedder Sub FilePrint() vil blive eksekveret når du vælger Filer - Udskriv. Den overtager menupunktets funktion, så du må selv sørge for resten.

Denne makro viser en meddelelsesboks og viser så print dialogboksen.
Du kan udskifte meddelelsesboksen med din egen kode.

Sub FilePrint()
MsgBox "Hello World"
Application.Dialogs(wdDialogFilePrint).Show
End Sub
Avatar billede ebech Nybegynder
26. maj 2003 - 13:49 #2
Tak det virker - men kun ved brug af Filer - Udskriv.

Hvis man klikker på printer ikonet på værktøjslinien, afvikles makroen ikke.
Findes der en løsning der dækker begge måder ?
Avatar billede jkrons Professor
26. maj 2003 - 14:19 #3
Alternativet er at bruge BeforePrint hændelsen. Problemet er at denne ikke er tilgængelig i Word umidelbart. For at gøre den tilgængelig skal du følge nedenstående procedure.


I VBA editoren skal du indsætte et klassemodul i Normal. Kald klassemodulet WordApplication. (Skriv navnet under Name i Prpoperties vinduet).

Øverst i klassemodulet skriver du nu:

Public WithEvents MinWord as Word.Application

Nu har du defineret et applikationsobjekt som du kan referere til. Dette objekt har en række hændelser, bl.a. BeforePrint. Du kan få adgang til disse hændelser ved at vælge MinWord i ruden til venstre og hændelserne i ruden til højre i editoren. Her skal du skrive din kode, fx

Private Sub MinWord_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
MsgBox "hello world"
End Sub

Resten nedenfor skal du gøre for at sikre at dit eget applikationsobjekt inititeres hver gang du åbner et dokument eller laver et nyt dokument-

Nu skal du så lave et ganske almindeligt modul (ikke et klassemodul) i Normal med denne kode i:

Dim MinWord As New Wordapplication

Sub InitialiserObjekt()
    Set MinWord.MinWord = Word.Application
End Sub

Endelig skal du i Normals ”ThisDocument” indsætte denne kode, der sikrer at dit wordobjekt initialiseres ved alle åbninger eller nye dokumenter.

Private Sub Document_Open()
    InitialiserObjekt
End Sub

Private Sub Document_New()
    InitialiserObjekt
End Sub

Løsningen her har jeg fra Leo Heuser i dk.edb.tekst.ms-word, der skal have al kredit for metoden.
Avatar billede ebech Nybegynder
27. maj 2003 - 08:21 #4
Det virker som det skal.  Tak for det.
Avatar billede jkrons Professor
27. maj 2003 - 13:04 #5
Velbekomme!
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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