Ik durf het bijna niet op te schrijven, maar ik heb zowaar m'n eerste nuttige Microsoft Word macro geproduceerd om de conversie van Kloekelijstjes per syntactisch verschijnsel in Word-formaat naar m'n gestructureerde en zelfbeschrijvende XML formaat te veraangenamen... Wat een drakonisch misbaksel is dat Visual Basic macrotaaltje toch.
De functie dient aangeroepen te worden na het selecteren van een lijst Kloekenummers. Deze worden vervolgens omgezet naar een tabel, waarna een nieuwe kolom wordt ingevoegd die vervolgens wordt gevuld met “</location><location>”.
Deze tabel kan tenslotte worden ge-copy-paste naar het XML document als <location> verzameling voor een <value> element...
Let bijvoorbeeld op conceptuele pareltjes zoals het functionele gebruik van de underscore en het moeten selecteren van een tabel element om er naar te kunnen schrijven...
Sub tabelOpzetten()
Selection.ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=1, _
NumRows:=7, Format:=wdTableFormatNone, ApplyBorders:=True, ApplyShading _
:=True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
AutoFit:=True, AutoFitBehavior:=wdAutoFitFixed
Selection.InsertColumns
Dim tableObject As Table
Dim rowObject As Row
Dim rowCount As Integer
Dim currentRow As Integer
rowCount = Selection.Rows.Count
currentRow = 0
Set tableObject = Selection.Tables(1)
Selection.InsertRowsBelow 1
tableObjec
t.Select
For Each rowObject In Selection.Rows
rowObject.Cells(1).Select
If currentRow = 0 Then
rowObject.Cells(1).Range.Text = "<location>"
Else
If currentRow = rowCount Then
rowObject.Cells(1).Range.Text = "</location>"
Else
rowObject.Cells(1).Range.Text = "</location><location>"
End If
End If
currentRow = currentRow + 1
Next rowObject
tableObject.Select
End Sub