Avatar billede codemon Nybegynder
26. april 2007 - 09:28 Der er 7 kommentarer og
1 løsning

vba makro som udføres hver gang et excel-ark åbnes

Vi har nogle makroer gemt i "personal.xls" så de kan bruges uanset hvilket ark der åbnes.

Nu vil vi have en makro som eksekveres hver gang vi åbner et ark.

Dette kan lade sig gøre, men makroen udføres idet excel åbner - før filen er indlæst.

Kan man lade "oprettelses-makro" vente til filen/arket er indlæst?

fx vil vi have auto-fit makro og auto-zoom makro på en type dokumenter vi tit åbner(det er nye dokumenter hver gang, så makroen skal udføres uanset dokument og fil-type - nogle er .csv filer)
Avatar billede word-hajen Nybegynder
26. april 2007 - 11:46 #1
Da I nu allerede benytter personal.xls til diverse, kunne I udvide denne. Start med at lave et klassemodul og kald det clsEvents.
Placer følgende i klassemodulet (**** angiver start-og-slut og skal IKKE med)

****
Option Explicit

Public WithEvents App As Excel.Application

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
    'kald det, der nu skal kaldes, hvis det også skal køre på nye filer
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    If LCase(Wb.Name) <> "personal.xls" Then
        'kald det, der nu skal kaldes
    End If
End Sub
****

I ThisWorkbook placeres følgende:

****
Option Explicit

Dim X As New clsEvents

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Set X = Nothing
End Sub

Private Sub Workbook_Open()
    Set X.App = Application
End Sub
****

Du skriver godt nok, at det skal ske uanset dokument og filtype - vi snakker stadig "kun" Excel, ikk'? Det er i hvertfald, hvad jeg er gået ud fra.
Avatar billede codemon Nybegynder
26. april 2007 - 16:07 #2
Ja, kun excel. Vi åbner bare flere typer filer i excel.
Avatar billede word-hajen Nybegynder
26. april 2007 - 16:42 #3
Jeg så godt din kommentar om .csv-filer, som ovenstående kode også reagerer på.
Avatar billede codemon Nybegynder
27. april 2007 - 09:37 #4
Det virker! Læg et svar og få point.

Er der andre måder at gøre det på - Siden du skriver "Da I nu alligevel benytter personal.xls"
Avatar billede codemon Nybegynder
27. april 2007 - 10:51 #5
Vi mangler at automatisk svare nej til at updatere link. Dialog boksen popper op tidligere end arket åbnes.
Avatar billede word-hajen Nybegynder
27. april 2007 - 11:33 #6
Svar ;-)

Og ja, der er andre måder. Man kunne f.eks. lave en add-in (xla) eller en anden workbook, der indeholder koden og placere denne i enten XLSTART eller en alternativ startup-folder. Personal.xls er jo lidt ligesom Normal.dot i Word - mest beregnet til brugerens evt. egne makroer o.lign.
Avatar billede word-hajen Nybegynder
27. april 2007 - 11:48 #7
Hvad mener du med, at dialogboksen popper op, før arket er åbnet? Jeg kan ikke umiddelbart se, at det kan lade sig gøre, da Excel reagerer på links, når den åbner excel-filen.

Men hvis I gerne vil have det slået fra, ser jeg 2 muligheder (det kan godt være, at der er flere, men det vil jeg ikke gøre mig klog på).

1. Slå det fra i Tools-Options-Edit-Ask to update automatic links (dette vil dog opdatere links, men uden at spørge brugeren)
2. Læg følgende kode ind i proceduren Private Sub App_WorkbookOpen(ByVal Wb As Workbook):

ActiveWorkbook.UpdateLinks = xlUpdateLinksNever

som betyder, at brugeren ikke bliver spurgt og links ikke opdateret. Dette gælder for lige præcis den workbook, som brugeren åbner og er altså ikke en generel indstilling. Men da koden fyres i luften, hver gang I åbner en excel-fil, skulle den være hjemme.
Avatar billede word-hajen Nybegynder
05. maj 2007 - 02:14 #8
Læg et svar og få point. Tjaeh, svaret har jeg lagt. Jeg kan godt nok ikke leve af point, men alligevel...
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