Avatar billede fiffi Novice
26. februar 2008 - 15:06 Der er 7 kommentarer og
1 løsning

Aktivere korrekt åbne dokument

Jeg har lavet en form hvor jeg direkte har programmeret et par knapper som åbner en ny skabelonfil (dot). Efterfølgende lukkes formen igen, og jeg kan anvende skabelonen. Nu er problemer imidlertid at det aktive dokument der vises er det der var vist før jeg åbner formen, altså ikke det nye. Jeg har forgæves forsøgt at finde det nye vinduesnummer via Application.ActiveWindow.Index som ser ud til at virke korrekt. Efterfølgende har jeg prøvet at aktivere det nye dokument med Windows(Dokument).Activate, men stadig uden rigtigt resultat.
Håber jeg har forklaret mig så det kan forståes.
Avatar billede Lene Fredborg Ekspert
26. februar 2008 - 15:54 #1
Det er altid en fordel at knytte en objektreference til alle de dokumenter, du skal holde styr på. Så kan du til enhver tid få fat i det rigtige dokument igen. Eksempel:

Mens du er sikker på, at dit rigtige dokument er aktivt:

Dim oDoc as Document

'Knyt en objektreference til dokumentet - brug Set
Set oDoc = ActiveDocument

Du kan også knytte en objektreference til, allerede mens du opretter eller åbner et dokument:
Set oDoc = Documents.Add…
Set oDoc = Documents.Open…

Når du så skal bruge dokumentet igen, kan du f.eks. bruge Activate til at aktivere det:

oDoc.Activate

Du kan også f.eks. få fat i data i dokumentet:

oDoc.Tables(1)….

I slutningen af din makro bør du frigive sådanne objektreferencer igen:

Set oDoc = Nothing

Håber det hjælper.
Avatar billede fiffi Novice
26. februar 2008 - 16:07 #2
Som du har foreslået lene har jeg prøvet at ligge følgende kode på knappen i min form.

Private Sub CommandButton1_Click()
    Dim oDoc As Document
    Documents.Add Template:="L:\Skabelon\Brev DK.dot", NewTemplate:=False, DocumentType:=0
    Set oDoc = ActiveDocument
    frmForm.hide
    oDoc.Activate
    Set oDoc = Nothing
End Sub

Det er dog stadigvæk ikke det nye dokument der vises, men det dokument jeg stod i før jeg startede formen, og det skal jo være det nye dokument/skabelon
Avatar billede Lene Fredborg Ekspert
26. februar 2008 - 16:41 #3
Jeg har jo ikke mulighed for at prøve lige nøjagtig det samme, som du har. Har du checket, at dit nye dokument _er_ det aktive dokument lige efter linjen "Documents.Add..."? (brug F8 til at steppe gemmem koden linje for linje).

Prøv at knytte referencen til dit nye dokument med det samme, dvs. lav de to linjer "Documents.Add..." og "Set oDoc..." om til følgende linje:

Set oDoc = Documents.Add (Template:="L:\Skabelon\Brev DK.dot", NewTemplate:=False, DocumentType:=0)

Gør det en forskel?

Ellers: er der noget med Application.Screenupdating, du har sat til False, så skærmen ikke bliver opdateret?
Avatar billede fiffi Novice
26. februar 2008 - 17:36 #4
Jeg har prøvet, efter jeg opretter det nye dokument, at sætte en msgbox der viser det active.index, altså det nyeste vinduesnr. Nummeret er det rigtige. Problemet er blot at når jeg, efter har lukket formen ikke kan activere netop dette nr.
Avatar billede Lene Fredborg Ekspert
26. februar 2008 - 18:05 #5
Slutter din kode med det, du har vist ovenfor? I givet fald er problemet sikkert, at du ikke lukker din UserForm. Du bruger frmForm.Hide. Det lukker ikke din UserForm - men skjuler den kun. Du kan bruge "Unload me" for at lukke. Prøv at fjerne frmForm.Hide og indsæt:
Unload me
lige før End sub

Hjælper det?
Avatar billede word-hajen Nybegynder
26. februar 2008 - 22:59 #6
Hvad foretager du dig, efter at du skjuler formen? Hvad er der af kode i den procedure, der sørger for at få vist formen?

Normalt vises det dokument, der er oprettet sidst, så måske er det kode i den kaldende procedure, der griber "forstyrrende" ind.
Avatar billede fiffi Novice
27. februar 2008 - 08:04 #7
I min procedure til at åbne formen har jeg blot frmForm.show.
Unload me hjælper ikke.
Avatar billede fiffi Novice
27. februar 2008 - 16:02 #8
Jeg tror jeg har lidt problemer omkring nogle modstidende interesser idet jeg også har et script som husker aktuel dokument istedet for nyt dokument af hensyn til en printfunktion. Jeg har løst problemet via 2 selvstændige forms og det virker nu.
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