[Word] Macro om macro's te verwijderen

Pagina: 1
Acties:
  • 258 views sinds 30-01-2008
  • Reageer

  • maroesjk
  • Registratie: Maart 2002
  • Laatst online: 15-06 13:45

maroesjk

from the ash rose a great bird

Topicstarter
Er is een bepaald document met een flink aantal macro's dat ik standaard 'macro-vrij' wil maken voor ik het doorstuur aan derden. Daarvoor heb ik een knop gemaakt, waarachter een macro zit die alle macro's verwijderd. Echter, het werkt niet helemaal. Hieronder (het relevante deel van) de code die onder de knop hangt.
code:
1
2
3
4
5
With ActiveDocument
    Application.OrganizerDelete Source:=.FullName, Name:="NewMacros", Object _
       :=wdOrganizerObjectProjectItems
    .Shapes("Control 10").Delete
End With

Probleem is dat de knop (Control 10) wel wordt weggehaald (regel 4) én alle macro's in "NewMacros" (regel 2/3), maar dat de macro die ik aan de knop heb toegewezen blijft bestaan. Deze moet namelijk staan in "ThisDocument". En verdwijnt ook niet als de knop zelf fysiek is weggehaald. Vraag is nu: Hoe verwijder ik met een macro de macro's uit "ThisDocument". Ik heb me al suf gezocht op GoT en Google, maar nix gevonden. Is er een VBS-wizard die me uit de brand helpt?

[ Voor 13% gewijzigd door maroesjk op 18-12-2003 11:40 ]

There are only 10 types of people in the world: Those who understand binary, and those who don't.


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Aangezien Word niet echt een Windows soort is, verplaats ik je topic eventjes naar Software Algemeen

Windows Operated Systems >> Software Algemeen

  • maroesjk
  • Registratie: Maart 2002
  • Laatst online: 15-06 13:45

maroesjk

from the ash rose a great bird

Topicstarter
Subtiel Kickje... Is er dan onder de GoTters niemand die errug veel verstand heeft van macro's in Word :?

There are only 10 types of people in the world: Those who understand binary, and those who don't.


  • maroesjk
  • Registratie: Maart 2002
  • Laatst online: 15-06 13:45

maroesjk

from the ash rose a great bird

Topicstarter
Last kickje :?

There are only 10 types of people in the world: Those who understand binary, and those who don't.


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

Volgens mij is het gewoon onmogelijk voor een macro om zichzelf te verwijderen. Ik zou die knop met de code in je Normal.dot bouwen. Laat de code dan alle macro's verwijderen, behalve die in Normal.dot.

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


  • maroesjk
  • Registratie: Maart 2002
  • Laatst online: 15-06 13:45

maroesjk

from the ash rose a great bird

Topicstarter
KingRichard schreef op 23 december 2003 @ 19:27:
Volgens mij is het gewoon onmogelijk voor een macro om zichzelf te verwijderen. Ik zou die knop met de code in je Normal.dot bouwen. Laat de code dan alle macro's verwijderen, behalve die in Normal.dot.
Het klinkt wellicht onlogisch, maar zoals ik in mijn beginpost heb gezet kun je met de
code:
1
2
3
4
With ActiveDocument
    Application.OrganizerDelete Source:=.FullName, Name:="NewMacros", Object _
       :=wdOrganizerObjectProjectItems
End With
wel degelijk alle macro's (behalve degene die in "ThisDocument" staan) verwijderen. Door bovenstaande code als macro in "NewMacros" te zetten (normale plaats voor macro's) kan je daarmee dus alle macro's uit "NewMacros" inclusief zichzelf weghalen.

Vraag is dus hoe je de macro's uit ThisDocument wegkrijgt, maar ik vrees daar geen antwoord op te gaan krijgen :'(

There are only 10 types of people in the world: Those who understand binary, and those who don't.


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

Je hebt gelijk. Een macro kan zichzelf verwijderen. Desalniettemin is mijn bovengenoemde oplossing een mogelijkheid. Trouwens, dit werkt wel:
code:
1
2
Application.OrganizerDelete Source:="Document1", Name:="ThisDocument", _ 
    Object:=wdOrganizerObjectProjectItems
Alleen is dan heel ThisDocument verdwenen. Een beter optie is het volgende:
code:
1
2
3
ActiveDocument.VBProject.VBComponents("ThisDocument").CodeModule.DeleteLines _
    startline:=1, Count:= _
    ActiveDocument.VBProject.VBComponents("ThisDocument").CodeModule.CountOfLines

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]


  • maroesjk
  • Registratie: Maart 2002
  • Laatst online: 15-06 13:45

maroesjk

from the ash rose a great bird

Topicstarter
_/-\o_ Hail King Richard ! (in elk geval iemand die meedenkt :-)

Slechts nog één probleem als ik je onderste oplossing gebruik: Ik krijg dan "Runtime Error '6068': Programmatic access to Visual Basic Project is not trusted". Hoe dat ik mijn macro-security ook heb staan. Dus het wil nog niet lukken. Heb je daar toevallig ook nog een oplossing voor?

Overigens heb ik nu even de optie die heel "thisdocument" weghaalt maar even ingebouwd, die werkt op zich prima... Ik had die overigens al eerder geprobeerd, maar kennelijk een fout gemaakt, waardoor deze niet (goed) werkte ... stom ...

De reden dat ik het macro niet in normal.dot wil hebben is omdat ik wel wil dat andere mensen de macros kunnen gebruiken als ik ze het originele bestand geef...

[ Voor 25% gewijzigd door maroesjk op 28-12-2003 12:51 ]

There are only 10 types of people in the world: Those who understand binary, and those who don't.


  • KingRichard
  • Registratie: September 2002
  • Laatst online: 17-08 19:31

KingRichard

former Duke of Gloucester

MSKB 282830: PRB: Programmatic Access to Office XP VBA Project Is Denied
Oftewel, Google ;)

[ Voor 4% gewijzigd door KingRichard op 28-12-2003 18:14 ]

a horse! a horse! my kingdom for a horse! (exeunt)
[got.profile] | [t.net.profile] | [specs]

Pagina: 1