26. april 2007 - 09:28Der 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)
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.
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.
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.
Læg et svar og få point. Tjaeh, svaret har jeg lagt. Jeg kan godt nok ikke leve af point, men alligevel...
Synes godt om
Ny brugerNybegynder
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.