05. september 2001 - 12:07 Der er 9 kommentarer og
1 løsning

Hvordan sletter jeg et modul eller en makro fra VBA?

Jeg har lavet en makro på Workbook_Open, som laver en masse hvorefter regnearket gemmes under et nyt navn, således at den oprindelige fil forbliver intakt.

Det betyder så at jeg ønkser at inaktivere Workbook_Open-makroen, således at den ikke kører, når man åbner den nye fil.

Hvordan gør jeg det?

Hvis jeg blot kan slette et modul via VBA, vil det være fint, da min Workbook_Open kalder en makro som ligger i et modul. Hvis modulet er væk, vil Workbook_Open ikke kunne kalde makroen.

pfh tak
/Thomas
Avatar billede janvogt Praktikant
05. september 2001 - 12:53 #1
Man kan slette ekstra moduler via VBA-kode, men man kan ikke slette moduler for f.eks. worksheets og ThisWorkbook.
Til gengæld kan du bruge nedenstående kode til at slette indholdet af disse moduler. Denne metode må du kunne bruge.

Sub DeleteModuleContent(ByVal wb As Workbook, ByVal DeleteModuleName As String)
\' sletter indholder af DeleteModuleName i wb
\' brug denne, hvis du ikke kan slette hele modulet
    On Error Resume Next
    With wb.VBProject.VBComponents(DeleteModuleName).CodeModule
        .DeleteLines 1, .CountOfLines
    End With
    On Error GoTo 0
End Sub

Eksempel:
DeleteModuleContent ActiveWorkbook, \"ThisWorkbook\"
05. september 2001 - 12:57 #2
Hey Jan, My Man :o)

Jeg checker det lige.

Har du set mit spørgsmål til dig: http://www.eksperten.dk/spm/98077
05. september 2001 - 12:58 #3
Du kan også gøre det på en anden måde, nemlig lade din makro være afhængig af navnet på det aktive regneark.

If ActiveWorkbook.Name <> \"Kørmig.xls\" Then
....
End If

Det kan nemlig godt være, at du får problemer med jan\'s udgave (som virker fint), men som jeg læser det, så skal du slette en makro, som allerede kører, og det tror jeg umiddelbart ikke, at du kan. Men prøv det da, og lad os høre resultatet.
Avatar billede janvogt Praktikant
05. september 2001 - 12:59 #4
Når jeg nu læser dit spørgsmål igen kan det godt være, at du alligevel kan bruge den kode, som sletter hele modulet.
Den ser sådan ud:

Sub DeleteVBComponent(ByVal wb As Workbook, ByVal CompName As String)
\' sletter vbcomponenten med navnet CompName fra wb
    Application.DisplayAlerts = False
    On Error Resume Next \' ignores any errors
    wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents(CompName) \' delete the component
    On Error GoTo 0
    Application.DisplayAlerts = True
End Sub

Eksempel:
DeleteVBComponent ActiveWorkbook, \"TestModule\"
05. september 2001 - 13:02 #5
Kom lige i tanke om, at jeg faktisk slet ikke ønsker at Excel skal prompte for om man ønsker at benytte makroer eller ej?

Som sådan må makroerne godt ligge der, bare de ikke bliver kørt...

Sagen er at mit nye Excel-ark skal sendes ud til kunder. Derfor skal de ikke promptes for om der skal benyttes makroer. Giver det mening?
Avatar billede janvogt Praktikant
05. september 2001 - 13:08 #6
Så skal du vist bare bruge denne her:

Application.DisplayAlerts = False
05. september 2001 - 13:10 #7
Glem min sidste kommentar...ved at bruge begge dine svar Jan, så lykkedes det mig at slette mine 2 moduler og tømme ThisWordbook. Derved promptes brugeren ikke for makroerne!

kanon!

Tak skal du have jan :o) Pointene er dine.

/Thomas

PS: Jeg ville blive virkelig glad, hvis du gad kigge på denne http://www.eksperten.dk/spm/98077.
Jeg opretter et nyt spgm til dig, hvis du kan svare.
Avatar billede janvogt Praktikant
05. september 2001 - 13:14 #8
Jeg kigger på det ..... selvom det umiddelbart ser vanskeligt ud. Måske er der andre der kan hjælpe .....
05. september 2001 - 13:16 #9
100 point.....lokke lokke :o)
Avatar billede janvogt Praktikant
05. september 2001 - 13:18 #10
Jeg ville såmænd give dig et svar uanset hvad - hvis jeg kunne :-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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