02. august 2002 - 11:43Der er
6 kommentarer og 1 løsning
Parameterkald for afvikling af makro i excell?
Hey,
Jeg danner en fil fra et program. Filen bliver døbt XX.xls. Når filen er dannet skal der ske en formattering af regnearket, men uden brugeren skal åbne programmet.
Makroen er lagt som module i person.xls. Jeg har prøvet at lægge den ind i starten af workbook_open, men det giver lidt kage, da jeg jo skal anvende makroen på det aktive dokument, der når workbook_open bliver exekveret, IKKE er åbent/aktivt.
Jamen Bak, Det er da også det vi har brug for, men problemet er, at makroen ligger i Person.xls, som automatisk åbnes med excel, mens det dokument som vi åbner egentligt er at betragte som en .csv fil indtil makroen fra person.xls er kørt.
Bjørnen> Så har jeg nok misforstået noget, ihvertfald er jeg lidt forvirret. Ønsker du din formateringsmakro kørt når excel åbner?? eller vil du have at excel automatisk skal køre makroen når xx.xls ?? Hvis xx.xls ikke selv har makroen i modulet ThisWorkbook kan det sidste ikke lade sig gøre da excel ikke har en event der kører hvergang en ny fil åbnes. Det første kan sagtens lade sig gøre.
Jeg har nu rodet lidt med det. Man kan faktisk godt lave en makro der overvåger hvilke filer der åbnes og derefter gøre noget ved filen hvis den hedder xx.xls. Sæt følgende ind i ThisWorkbook:
Dim AppObject As New CAppFile
Private Sub Workbook_Open() Set AppObject.app = Application End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Set AppObject.app = Nothing End Sub
Opret så et klassemodul ved navn CAppFile og indsæt en koden som denne. Skal selvfølgelig ændres til dit behov
Public WithEvents app As Application
Private Sub app_WorkbookOpen(ByVal WBook As Excel.Workbook) If UCase(WBook.FullName) = "C:\XX.XLS" Then With WBook.Worksheets("Ark1") .Range("A1:c1").Font.Bold = True .Range("A1").FormulaR1C1 = "a" .Range("B1").FormulaR1C1 = "b" .Range("C1").FormulaR1C1 = "c" .Columns("A:c").EntireColumn.AutoFit End With End If End Sub
Ovenstående kode "ser" hvilke filer excel åbner og hvis filen hedder xx.xls bliver den formateret ellers ikke. Linien With WBook.Worksheets("Ark1") ændres til With WBook.Sheets(1)
Det hele kan også laves som en ADD-IN hvilket gør det nemmere at distribuere end hvis det skal ligge i person.xls
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.