Groot aantal macro's aanpassen in 1 keer.

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

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 11:02
Kent iemand een mogelijkheid of een stukje software om binnen een klein aantal handelingen een groot aantal macro's aan te passen.

Ik heb bij Google gezocht, maar het enige dat ik krijg is dat als ik iets wil editten dat ik een macro kan gebruiken. :O

k zoek dus een soort 'search and replace' maar dan voor de macro's en voor een groot aantal bestanden.

[ Voor 19% gewijzigd door MuddyMagical op 26-05-2005 16:05 ]


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 11:35
Wat zoek je precies?
Aannemende dat je MS Office bedoeld, bekijk de VBA help eens over "VBE" en z'n kindjes. Hiermee kan je modules manipuleren.

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 11:02
ok, ik zal even de situatie duidelijker stellen...

Ik heb hier een 150 MS-Word documenten die allemaal dezelfde macro bevatten. Alleen moet er een stukje aangepast worden. Dit kan ik op 2 manieren doen: The hard way or the easy way. :P

Als ik die 150 documenten handmatig ga aanpassen ben ik bij document 60 de helft van mijn herseninhoud kwijt door het geestdodende werk, maar het belangrijkste is dat ook iemand anders die het beheer gaat overnemen die zal moeten doen in het geval van een wijziging...

Nu ben ik dus opzoek naar een manier of een stukje software dat in een map elk bestand opend, de macro opent om te bewerken, het stukje code wijzigd en het document weer sluit inclusief opslaan.

Verwijderd

ik zeg: download Auto-it3.

Maak een loopje waarin de documentnaam variabel is en werk je met tabjes door het document heen.

Een vb dat ik laatst maakt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$excel="C:\Program Files\Microsoft Office\Office10\Excel.exe"    ;locatie exel

$doc_path="C:\Documents and Settings\olav\Desktop\"              ;document pad
$doc="book1"                                                     ;document naam
$ext=".xls"                                                      ;document extentie
$datum=_DateTimeFormat( _NowCalc(),1)                            ;datum


#Include <date.au3>                           


run ($excel)                         ;open excel
WinWait ("Microsoft Excel - Book1")  ;wacht tot excel open is

send("{ALT}F")                       ;selecteer file menu
send("{ENTER}")                      ;enter
send($doc_path & $doc & $ext)        ;type documentnaam in
send("{ENTER}")                      ;geef enter
send("{TAB}")                        ;selecteer "enable automatic refresh"
send("{ENTER}")                      ;enter
send("{ENTER}")                      ;zoekt filename op en enter

sleep(3600000 )                     ;wacht een uur

send("{ALT}FA")                      ;selecteer file menu  & Save as
send ($doc_path&$doc&$datum&$ext)    ;save de file met een satum eraan.
send("{ENTER}")                      ;enter
send("{ALT}FX")                      ;selecteer file menu & exit



Dit kun je vast aanpassen zodat ie je macro edit.

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 11:35
Waarschijnlijk zal VBE inderdaad doen wat je wilt.
(Let op, je moet soms de referentie naar VBE nog even aanzetten, in je Tools references menu, kies Microsoft Visual Basic for Applications Extensibility oid)
Even wat pseudocode voor een macrootje in een nieuw document:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim project As VBComponents
Dim oudemodule As VBComponent
Dim nieuwemodule As VBComponent

For 'loop door je bestanden
besstand.open
Set project = bestand.VBProject
Set oudemodule = project.Item("Modulenaam") 'hier moet je even mee spelen,
project.Remove (oudemodule)
Set nieuwemodule = project.Import("de bestandslocatie van je geexporterrde nieuwe module")
nieuwemodule.Name = "de goede naam"
bestand.save
next 'volgende bestand

Je moet ben ik bang al je beveiligingsinstellingen zo laag mogelijk vinden daar macrovirussen naar ik aanneem een equivalente methode gebruiken en alles wat op je PC virussen bestrijdt (o.a. macro security in word) hier boos van gaat doen.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Met de tips hierboven (i.c.m. de info in en help van de desbetreffende programma's) zou je er helemaal uit moeten komen. Kleine aanvulling: je geeft zelf al aan dat het in de toekomst weer veranderd en dat de macro's allemaal gelijk aan elkaar zijn.

Vraag je daarom af of je de code niet kunt gaat centraliseren: zet in de docs enkel een verwijzing naar een enkel centraal bestand. Als je 24/7 aan een netwerk hangt of als je af en toe synct ben je op die manier voortaan veel sneller klaar :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 11:35
Aanvulling/verbetering,
project zal je moeten declareren als VBProject, en VBComponent zou ook wel eens niet goed kunnen gaan.
Pagina: 1