Avatar billede snowball Novice
28. september 2004 - 10:51 Der er 4 kommentarer og
1 løsning

VBA: Macro udfører ikke resterende kode efter .Close

Hej.

Jeg forsøger at lave en lille arkiverings funktion. Planen er at filen skal gemmes under et nyt navn vha. SaveAs eftersom CopyFile funktionen jo ikke kan kopiere en fil som er åben. Efter den nye fil er oprettet, skal den så vende tilbage til det originale dokument for at man ikke kommer til at arbejde videre i den arkiverede fil. Problemet er så bare at efter jeg lukker backup filen, så udføres resten af min macro ikke. Den stopper simpelthent bare. Måske har det noget at gøre med at man jo lukker det dokument som macroen jo egentlig blev kaldt fra!?

Nedenstående kode kan bruges som test. Har prøvet at sætte "CreateBackup" til True på .SaveAs, men det ændrer ikke noget. MsgBox funktionen bliver aldrig udført. Hvordan kan man få den til at udføre resten af koden?

<--Kode start-->

Dim SourceFile, SourceDoc, ArchivedFile As String

'Gem stien på den originale fil
SourceFile = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
'Gem selve filnavnet på den originale fil
SourceDoc = ActiveWorkbook.Name
'Gem den kopi af filen under et nyt navn
ActiveWorkbook.SaveAs ActiveWorkbook.Path & "\backup_" & ActiveWorkbook.Name
'Gem selve filnavnet på den kopierede fil
ArchivedFile = ActiveWorkbook.Name
'Åben den originale fil
Workbooks.Open FileName:=SourceFile
'Bring den originale fil i fokus
Windows(SourceDoc).Activate
'Luk den kopierede fil
Workbooks(ArchivedFile).Close False

'ALT HVAD DER STÅR HEREFTER BLIVER IKKE UDFØRT!!!
MsgBox "Arkivering udført"

<--Kode slut-->

Evt. anden fremgangsmåde kan nok også accepteres :)

På forhånd tak.
Avatar billede jkrons Professor
28. september 2004 - 10:54 #1
Du er nødt til at have din kode i et andet dokument end det, du lukker. Et dokument som er åbent under hele processen.
Avatar billede jkrons Professor
28. september 2004 - 10:55 #2
Forsøg fx at lægge koden i den personlige makroprojektmappe (person.xls).
Avatar billede snowball Novice
28. september 2004 - 11:03 #3
Tænkte det nok :|

Men jeg har rent faktisk min kode liggende i et andet dokument end det jeg lukker. Ovenstående eksempel er blot en simpel udgave af det jeg prøver at gøre. Problemet er vel bare at jeg jo lukker den fil som jeg kaldte macroen fra !?

I det rigtige tilfælde ser det sådan her ud:

* Jeg har mine macroen i en selvstændig fil
* Jeg har i det ark jeg ønsker at arkivere, en funktion som kalder en macro i den selvstændige fil
* Macroen i den selvstændige fil forsøger så at udføre det som jeg beskriver i mit spørgsmål.
Avatar billede snowball Novice
28. september 2004 - 11:24 #4
Men er der en der kan lave et eksempel på hvordan min plan for arkiveringen kan komme til at virke!? I eksemplet skal I dog være opmærksomme på at det hele skal bruges af flere forskellige personer og på flere forskellige PC'er.
Avatar billede snowball Novice
29. september 2004 - 09:31 #5
Har ved hjælp af lidt omveje og Application.OnTime fået løst problemet.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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