Word
De onderstaande klassenmodule leest een tabel uit in een Word-document. Daar er wordt gewerkt met een nieuwe instantie van het Word object wordt het proces volledig op de achtergrond uitgevoerd.
Het maken van een verwijzing naar de Object Library van Word is niet nodig gezien deze al standaard zit opgenomen in Word toepassingen.
Bronnen zoals deze kunnen een uitkomst bieden bij primaire registratiesystemen die alleen de mogelijkheid hebben om Word-brieven te printen.
In de plaats van het ontwikkelen van een brief kan een gegevensbestand worden ontwikkeld met behulp van een tabel. De gebruiker kan dit document dan naar de persoonlijke schijf wegschrijven in de plaats van te printen. Op deze manier kan dit bestand dan fungeren als gegevensbestand.
'----------------------------------------------------------------------------------------------------------------------- ' Auteur : pascalterheege.nl ' Datum : 28-3-2017 ' Object : clsWord ' Doel : waarden laden, wijzigen en verwijderen uit WordBestand ' Verwijzing : Microsoft Word X Object library ' Objecten : 1. Word applicatie ' 2. Word document ' 3. Word tabel '----------------------------------------------------------------------------------------------------------------------- Option Explicit Dim objWord As Word.Application Dim objDocument As Word.Document Dim objTabel As Word.Table Private Sub Class_Initialize() ' Initialisatie Word-objecten Set objWord = New Word.Application Set objDocument = objWord.Documents.Open(WordBestand) Set objTabel = objDocument.Tables(1) End Sub Public Sub Laden(lsb As ListBox) ' Waarden uitlezen uit tabel Dim i As Integer For i = 2 To objTabel.Rows.Count With lsb .AddItem .List(i - 2, 0) = verwijderTekens(objTabel.Cell(i, 1).Range.Text) .List(i - 2, 1) = verwijderTekens(objTabel.Cell(i, 2).Range.Text) .List(i - 2, 2) = verwijderTekens(objTabel.Cell(i, 3).Range.Text) End With Next End Sub Public Sub Toevoegen(strNummer As String, strVoornaam As String, strAchternaam As String) ' Nieuwe rij toevoegen With objTabel .Rows.Add .Cell(objTabel.Rows.Count + 2, 1).Range.Text = strNummer .Cell(objTabel.Rows.Count + 2, 2).Range.Text = strVoornaam .Cell(objTabel.Rows.Count + 2, 3).Range.Text = strAchternaam End With End Sub Public Sub Wijzig(strNummer As String, strVoornaam As String, strAchternaam As String) ' Aan de hand van nummer rij wijzigen Dim i As Integer For i = 2 To objTabel.Rows.Count If verwijderTekens(objTabel.Cell(i - 2, 1).Range.Text) = strNummer Then objTabel.Cell(i - 2, 2).Range.Text = strVoornaam objTabel.Cell(i - 2, 3).Range.Text = strAchternaam Exit For End If Next i End Sub Private Function verwijderTekens(waarde) ' Waarden uit cellen komen met overbodige tekens, zoals bijvoorbeeld = chr(7) en enters (11 en 13) verwijderTekens = Replace(waarde, Chr(7), "") verwijderTekens = Replace(verwijderTekens, Chr(11), "") verwijderTekens = Replace(verwijderTekens, Chr(13), "") End Function Public Sub Verwijder(strNummer As String, blnAlles As Boolean) ' Alle rijen verwijderen (exclusief kop) of aan de hand van nummer Dim i For i = objTabel.Rows.Count To 2 Step -1 If blnAlles = True Then objTabel.Rows(i).Delete Else If verwijderTekens(objTabel.Cell(i, 1).Range.Text) = strNummer Then objTabel.Rows(i).Delete End If End If Next End Sub Private Sub Class_Terminate() ' Deinitialisatie Word-objecten objDocument.Close (False) objWord.Quit Set objTabel = Nothing Set objDocument = Nothing Set objWord = Nothing End Sub