M'n eerste Microsoft Word macro!
Datum: Woensdag 26 mei @ 09:56:57 GMT+1
Onderwerp: Software


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






Dit artikel komt van marco@work
http://marco.info/pro

De URL voor dit verhaal is:
http://marco.info/pro/modules.php?name=News&file=article&sid=87