Avatar billede bjorn_jeppesen Nybegynder
02. august 2002 - 11:43 Der 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.

Nogle hints?

:-) Bjørnen
Avatar billede bak Forsker
03. august 2002 - 10:58 #1
I stedet for at referere til activeworkbook referer til ThisWorkbook.
ThisWorkbook er altid den fil som koden startes fra.
Avatar billede bjorn_jeppesen Nybegynder
03. august 2002 - 17:34 #2
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.

Any suggestions?

:-)
Bjørnen
Avatar billede bak Forsker
04. august 2002 - 14:01 #3
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.
Avatar billede bak Forsker
04. august 2002 - 14:02 #4
linie 3.
eller vil du have at excel automatisk skal køre makroen når xx.xls ÅBNES??
Avatar billede bak Forsker
04. august 2002 - 14:36 #5
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
Avatar billede bak Forsker
04. august 2002 - 14:41 #6
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
Avatar billede bjorn_jeppesen Nybegynder
05. august 2002 - 23:59 #7
Du er sgu' da for vil!!!!!

Takker og bukker!

:-)
Bjørnen
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
Kurser inden for grundlæggende programmering

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