Avatar billede masteraaen Novice
23. august 2006 - 15:22 Der er 12 kommentarer og
1 løsning

Bruge samme sub fra flere excel-filer

Hejsa.


Jeg laver timesagsregnskaber - eet til hver medarbejder i excel.
Jeg har lavet en sub, der summerer op for de enkelte uge i et sum-ark, som jeg derefter bruger i pivottabeller.

Alle ark og subs er ens for alle medarbejdere, før de udfyldes.
Men hver gang jeg finder på noget nyt og ændrer i min sub, så skal jeg ændre det i alle mine subs, da det er i hver deres excel-fil på serveren.
Kan man da ikke lægge denne sub i et eller andet "public library" eller noget, så man blot kan kalde denne "fælles-sub" fra en hvilken som helst excel-fil (via en makro)?

sådan noget á la: Call sub Timesag_person()
Avatar billede kabbak Professor
23. august 2006 - 17:53 #1
hvis du smider dine subs i din personlige projektmappe, behøver du dem ikke i de andre ark.
Avatar billede kabbak Professor
23. august 2006 - 17:59 #2
hvis du ikke ved hvordan du får dem i den personlige projektmappe, eller ikke har en endnu, så får du den frem ved at gøre følgende.

Vælg indspil ny makro, i boksen der kommer frem vælger du Personlig makroProjektmappe, tryk ok maker en  celle og stop makroen.

nu er din personlige projektmappe dannet.

Slet den makro du lige optog og smid dine andre subs derover.

Personlig projektmappe indlæses altid, når du åbner Excel
Avatar billede masteraaen Novice
23. august 2006 - 18:51 #3
Jeg har gjort som du siger men jeg får fejlmeddelelsen:

""
Der opstod en kompileringsfejl:
Sub eller Funcion-procedure ikke defineret
""
Avatar billede masteraaen Novice
23. august 2006 - 19:11 #4
jeg skriver

Call Timesag_Person

for at kalde sub'en.
Avatar billede kabbak Professor
23. august 2006 - 19:24 #5
du skal ikke call, kør makroen som normalt
Avatar billede kabbak Professor
23. august 2006 - 19:30 #6
Call Person.xls!Timesag_Person
Avatar billede masteraaen Novice
23. august 2006 - 19:32 #7
Jamen jeg kører den normalt ved, at den ligger inde i en makrokode, der afspilles når jeg trykker på en knap. Knappen aktiverer "Private Sub CommandButton1_Click()" som jeg har lagt koden i i alle de excel-filer, jeg bruger.

Det jeg så ville var at lade knappen aktivere følgende:

Private Sub CommandButton1_Click()
call Timesag_Person
End sub

Men den går ikke. Hvordan kan jeg ellers "køre makroen som normalt"? (jeg er lidt langsom).
Avatar billede kabbak Professor
23. august 2006 - 19:33 #8
Application.Run "Person.xls!Timesag_Person"
Avatar billede kabbak Professor
23. august 2006 - 19:38 #9
undskyld, hjernen tog en slapper, det sidste skulle virke ;-))
Avatar billede masteraaen Novice
23. august 2006 - 19:38 #10
Nu fandt jeg ud af det. Man kan simpelthen afvikle den ved:

Application.Run ("timesag.xla!timesag_person")

Oversat:

Application.run("navnpåxlafil.xla!navnpåmakro")
Avatar billede masteraaen Novice
23. august 2006 - 19:39 #11
Tak for hjælpen kabbak. Smid et svar :-)
Avatar billede kabbak Professor
23. august 2006 - 19:55 #12
et svar,

Havde du prøvet det med den personlige mappe før ??.
Jeg bruger den meget, men jeg laver en menulinie med knapper til makroerne, så er de altid ved hånden.

Jeg smider lige koden til en menulinie og en makro.

Sæt dem ind i din personlige mappe, gem og luk så excel.

næste gang du så åbner excel, er menulinien kommet.

Håber at det er noget du kan lege med.

Sub auto_open()
    For Each cbar In CommandBars
        If cbar.Name = "kabbak" Then
            cbar.Delete
        End If
    Next
    Set cbar1 = CommandBars.Add(Name:="kabbak", Position:=msoBarTop)

    cbar1.Visible = True
    Set newItem = CommandBars("kabbak").Controls.Add(Type:=msoControlButton)

    Set newItem = CommandBars("kabbak").Controls.Add(Type:=msoControlButton)
    With newItem
        .BeginGroup = False
        .Caption = "( Gentag overskrift)"
        .Style = msoButtonCaption
        .OnAction = "linie"
    End With

    Set newItem = CommandBars("kabbak").Controls.Add(Type:=msoControlButton)
    With newItem
        .BeginGroup = False
        .Caption = "(Sti)"
        .Style = msoButtonCaption
        .OnAction = "Sti"
    End With
Slut:
End Sub

Sub Sti()
    A = MsgBox("Vil indsætte stien til XL Regnearket i sidefoden ", vbYesNo, "FILPLACERINGEN BLIVER ANGIVET PÅ UDSKRIFT  v.Kabbak ©")
    If A = 6 Then
        Application.ScreenUpdating = False
        Application.StatusBar = "Ændrer sidefod i" & ActiveSheet.Name
        ActiveSheet.PageSetup.LeftFooter = ActiveWorkbook.Path & "\" & " &F"
        Application.StatusBar = False
    End If
End Sub
Sub Linie()
    On Error GoTo Slut
    A = MsgBox("Vil du gentage en eller flere linier på alle udskrevne sider", vbYesNo, "OVERSKRIFT PÅ UDSKRIFT  v.Kabbak ©")
    If A = 6 Then
        B = InputBox("Hvor mange linier", "Antal linier", 1)

        With ActiveSheet.PageSetup
            .PrintTitleRows = "$1:$" & B
            .PrintTitleColumns = ""
        End With
    Else

        Exit Sub
    End If
Slut:
End Sub
Avatar billede masteraaen Novice
24. august 2006 - 23:00 #13
Mange tak. Det vil jeg prøve.
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