© 2004 - W alt's J ungle S tudio, N ederland - - > Mail: W J S N
W J S N
www.wjsn.nl - Home Page
Terug naar: Informatica
VBA Page
Visual Basic for Applications
Using VBA for: replacing/changing characters and numbers / filling builtin document properties (= adding texts) / adding custom document properties (names and values) / defining the lay-out [ macro's and procedures in Word and Excel ].
English: The information you will find here can be translated // Español: La información que usted encuentra aquí, puede ser traducida // Français: Traduire est possible ici // Deutsch: Besuchen Sie diese Webseite für eine Übersetzung // Italiano: Qui puoi tradurre il testo in Italiano // Arabisch, , Arab: You can understand ALL the examples below - without translation - if you can read and understand English !

Met VBA kun je onder meer de bestands-eigenschappen van Word- en Excel-files wijzigen of aanvullen (en dat geldt ook voor Powerpoint-files). Onder Bestand | Eigenschappen vind je de "normale" bestands-eigenschappen, die men "BuiltIn Document Properties" noemt. Als je deze bestands-eigenschappen gaat bekijken, dan zie je dat de meeste NIET zijn ingevuld (= ze zijn leeg). Het gaat om zaken als: Titel, Auteur, Commentaar, Onderwerp, Bedrijf, etc.
Met VBA kun je ze op een simpele manier "vullen" (= een Waarde geven). In Word gaat dat anders dan in Excel. Kijk hiervoor onderaan onder: "Teksten toevoegen aan de bestaande BuiltIn Document Properties m.b.v. VBA".
Met VBA kun je OOK andere bestands-eigenschappen van Word- en Excel-files wijzigen of aanvullen (en dat geldt ook voor Powerpoint-files). Onder Bestand | Eigenschappen vind je naast de "normale" bestands-eigenschappen ook de zgn. "Custom Document Properties". Deze bestands-eigenschappen zijn NIET ingevuld (= ze zijn leeg).
Met VBA kun je er op een simpele manier een aantal "toevoegen" (= zelf een Naam geven en er ook een Waarde aan geven). In Word gaat dat anders dan in Excel. Kijk hieronder bij: "Je eigen Custom Document Properties toevoegen m.b.v. VBA.
VBA kan ook handig worden ingezet om karakters te vervangen door andere karakters. Dat kan door (wel of niet) onderscheid te maken tussen gewone (kleine) letters en hoofdletters. Hoe dat moet staat onder: Karakters vervangen door andere karakters . Ook hier gaat het vervangen in Word op een andere manier dan het vervangen in Excel.
Er is nog veel meer mogelijk met VBA. Je kunt bijvoorbeeld vooraf de gewenste Opmaak opgeven in Word. Je geeft het gewenste Lettertype op, de Onderstreping, de Lettergrootte, etc.. Kijk hiervoor onder: De "opmaak" vooraf vastleggen .

Vaak is het veel simpeler om direct een macro (een procedure) te maken. Hoe dat moet voor Excel staat onder: macro maken . Voor een macro maken in Word, kun je hier terecht.


Je eigen Custom Document Properties toevoegen m.b.v. VBA

In Word gaat het zo:

Sub AddCustDocProp()
xx ActiveDocument.CustomDocumentProperties.Add Name:="Chapter", LinkToContent:=False, Value:="Nr 9",
xx Type:=msoPropertyTypeString
End Sub

In Excel gaat het zo:

Sub AddCustDocProp()
xx ActiveWorkbook.CustomDocumentProperties.Add Name:="Chapter", LinkToContent:=False, Value:="Nr 9",
xx Type:=msoPropertyTypeString
End Sub

Nota Bene: In bovenstaande voorbeelden werd een nieuwe "property" toegevoegd aan het bestand, m.n. "Chapter" (een Naam dus). Deze nieuwe bestandseigenschap kreeg ook een waarde mee, m.n. "Nr 9" (de zgn. Value). Je kunt hier alles opgeven wat je wilt. Dat geldt dus voor de Naam maar ook voor de Waarde.


Teksten toevoegen aan de bestaande BuiltIn Document Properties m.b.v. VBA

In Word gaat het zo:

Sub AddBltInDocProp()
xx ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle) = "History of Mankind"
xx ActiveDocument.BuiltInDocumentProperties(wdPropertySubject) = "Primitive Tribes"
xx ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor) = "Shakespeare"
xx ActiveDocument.BuiltInDocumentProperties(wdPropertyCategory) = "History"
xx ActiveDocument.BuiltInDocumentProperties(wdPropertyKeywords) = "History, Mankind, Ancient"
xx ActiveDocument.BuiltInDocumentProperties(wdPropertyComments) = "No comments at this moment"
xx ActiveDocument.BuiltInDocumentProperties(wdPropertyManager) = "WJSN"
xx ActiveDocument.BuiltInDocumentProperties(wdPropertyCompany) = "Netwerk 2000"
End Sub

In Excel gaat het zo:

Sub AddBltInDocProp()
xx ActiveWorkbook.Title="History of Mankind"
xx ActiveWorkbook.Subject="Primitives Tribes"
xx ActiveWorkbook.Author="Shakespeare"
xx ActiveWorkbook.Comments="No comments at this moment"
End Sub

Nota Bene: In bovenstaande voorbeelden werden bestaande "properties" gevuld: ze hebben al een Naam maar krijgen nu dus ook een Waarde. Er komt nu een tekst in het bestand te staan onder "Titel", onder "Commentaar", etc. etc.. In plaats van "History of Mankind" kun je ook hier weer alles opgeven wat je wilt. Dat geldt ook voor de andere bestandseigenschappen.


Karakters vervangen door andere karakters

In Excel gaat het zo:

Sub Replace()
xx Cells.Replace What:="4", Replacement:="999", LookAt:=xlPart, SearchOrder _:=xlByRows
End Sub

Nota Bene: In bovenstaand voorbeeld wordt in het Excel bestand overal het cijfer "4" vervangen door het cijfer "999". Het vervangen van een letter door een cijfer of door iets anders, gaat in Excel op precies dezelfde manier.


In Word gaat het zo:

Sub Replace()
xx Selection.Find.ClearFormatting
xx Selection.Find.Replacement.ClearFormatting
xx With Selection.Find
xxxxx .Text = "A"
xxxxx .Replacement.Text = "100"
xxxxx .Forward = True
xxxxx .MatchCase = True
xx End With
xx Selection.Find.Execute Replace:=wdReplaceAll
xx With Selection.Find
xxxxx .Text = "a"
xxxxx .Replacement.Text = "10"
xxxxx .Forward = True
xxxxx .MatchCase = True
xx End With
xx Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Nota Bene: In bovenstaand voorbeeld wordt elke letter "A" vervangen door het getal 100 en elke "a" door 10. Het weglaten van de zin .MatchCase = True zorgt ervoor, dat er geen onderscheid gemaakt wordt tussen gewone letters en hoofdletters. De laatste vervang- opdracht die elke "a" in een "10" verandert, heeft dan dus geen functie (doel) meer en kan dan ook worden weggelaten. Hetzelfde resultaat wordt verkregen als .MatchCase = True vervangen wordt door: .MatchCase = False
Download examples: Macro's that work: 1) Grieks omzetten , 2) Russisch omzetten en 3) Arabisch omzetten


De "opmaak" vooraf vastleggen (in Word)

In Voorbeeld 1 gaat dat als volgt:

Sub VerdanaType()
xx With Selection.Font
xxxxx .Name = "Verdana"
xxxxx .Size = 10
xxxxx .Bold = False
xxxxx .Italic = True
xxxxx .Underline = wdUnderlineSingle
xx End With
End Sub

In Voorbeeld 2 gaat dat als volgt:

Sub ArialType()
xx With Selection.Font
xxxxx .Name = "Arial"
xxxxx .Size = 11
xxxxx .Bold = True
xxxxx .Italic = False
xxxxx .Underline = wdUnderlineNone
xx End With
End Sub

Nota Bene: In bovenstaand voorbeeld 1 wordt vooraf opgegeven: Lettertype Verdana, Lettergrootte = 10, Italic (= cursief) en onderstreept. In voorbeeld 2 wordt opgegeven: Lettertype Arial, Lettergrootte = 11, Bold (= vet) en niet onderstreept.