Avatar billede dc Nybegynder
21. juli 2003 - 09:53 Der er 17 kommentarer og
1 løsning

VBA Editor: Gemme regneark uden makro

Kan det lade sig gøre at gemme et regneark uden makro? Jeg har et regneark med en makro, hvor man skal udfylde forskellige ting, og regnearket gemmes automatisk under et nyt navn et specifikt sted. Vha. et tidligere spørgsmål har jeg fået noget kode som fjerner al kode i makroen. Men der er stadig moduler og forms tilbage og når det gemte regneark åbnes og den spørger om man vil disable eller enable makroen og det er det jeg vil have fjernet, fordi det gemte regneark skal ikke have nogen makro. Kan man kode sig ud at dette problem?
Avatar billede bak Forsker
21. juli 2003 - 10:43 #1
En mindre justering kan afhjælpe det.

Public Sub CodeRemove(ProjMappe)
    Set WB = Workbooks(ProjMappe)
    For x = WB.VBProject.VBComponents.Count To 1 Step -1
        n = WB.VBProject.VBComponents(x).Name
        a = WB.VBProject.VBComponents(x).CodeModule.CountOfLines
        If a > 0 Then
            WB.VBProject.VBComponents(x).CodeModule.DeleteLines 1, a
        End If
        On Error Resume Next
        WB.VBProject.VBComponents.Remove WB.VBProject.VBComponents(x)
        On Error GoTo 0
    Next x
End Sub

Sub gem()
Call CodeRemove(ActiveWorkbook.Name)
ActiveWorkbook.SaveAs s_FileName
ActiveWorkbook.Close
End Sub
Avatar billede dc Nybegynder
21. juli 2003 - 10:54 #2
Den spørger stadig om makroen skal afspilles når jeg åbner det gemte ark. Men al koden er væk og det er jo en start. Kan man også slette modulerne og formene?
Avatar billede jkrons Professor
21. juli 2003 - 11:04 #3
Gå ind i VBA editoren. Højreklik på det modul, du vil fjerne og vælg Remove. Sig Nej til at eksportere modulet først.
Avatar billede dc Nybegynder
21. juli 2003 - 11:09 #4
jkrons -> Det skal ske automatisk når arket gemmes (med et nyt navn)
Avatar billede jkrons Professor
21. juli 2003 - 11:10 #5
Undskyld. Jeg overså, at det skulle gøres i kode.
Avatar billede bak Forsker
21. juli 2003 - 11:19 #6
Hvis du kører ovenstående makro skulle alle moduler og form da gerne være slettet og fjernet.
Der vil så være arkenes egne moduler tilbage, men der er al kode slettet. (Thisworkbook og arkmodulerne kan ikke fjernes)
Avatar billede jkrons Professor
21. juli 2003 - 11:21 #7
bak-> Er problemet ikke, at koden ikke kan fjerne det modul, den selv er i? For når jeg prøver den bliver, det modul tilsyneladende altid tilbage.
Avatar billede bak Forsker
21. juli 2003 - 11:25 #8
Jo, det kan da godt være. Har ikke chekket. Jeg har selvfølgelig lagt denne slettekode i person.xls, så den kan bruges overalt. :-))
Avatar billede dc Nybegynder
21. juli 2003 - 11:28 #9
bak -> har prøvet, men den sletter kun koden
Avatar billede bak Forsker
21. juli 2003 - 11:34 #10
Jeg forstår ikke helt det her.
Ved mig fjernes alle moduler og forms i den aktive projektmappe og de der ikke er beregnet til at fjerne slettes/ryddes.
Avatar billede jkrons Professor
21. juli 2003 - 11:52 #11
Hvis den ligger i person.xls virker den udmærket også hos mig, men hvis den ligger i den mappe, hvor koden skal slettes fra, virker den ikke.
Avatar billede dc Nybegynder
21. juli 2003 - 11:58 #12
Ellers skal man som nævnt tidligere i et andet af mine spørgsmål, kopiere al regneark indholdet over i et nyt og på den måde undgå makroen.
Avatar billede bak Forsker
21. juli 2003 - 12:03 #13
Det er da en mulighed, men hvis du kopierer arkenene følger arkets kode med (hvis du sådanne makroer).
Hvis du ikke v i l have makroen i et separat regneark eller i person.xls, så kan man overføre dette modul til et midlertidig regneark, køre makroen og derefter slette det midlertidige regneark.
Avatar billede jkrons Professor
21. juli 2003 - 12:12 #14
Hvis du kun har data i et enkelt ark, er det ret nemt at kopiere til en ny mappe:

Sheets("Arknavn").Copy
ActiveWorkbook.SaveAs "Filnavn"
ActiveWorkbookClose
Avatar billede dc Nybegynder
21. juli 2003 - 12:26 #15
ok, jeg prøver og vender tilbage
Avatar billede slo Nybegynder
22. juli 2003 - 14:15 #16
...og så er vi tilbage i den kommentar jeg afgav første gang spørgsmålet blev stillet. Det er i øvrigt min holdning at man bør holde fingrene væk fra VBComponents.Remove metoden hvis ikke man først eksporterer moduler, forms etc.
Avatar billede dc Nybegynder
22. juli 2003 - 22:29 #17
bak -> kom med et svar... du har fortjent pointene da jeg bruger din løsning, tak :)
Avatar billede bak Forsker
22. juli 2003 - 23:31 #18
Ok, glæder mig at det kan bruges :-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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