Het aanspreken van de formfields in VB.NET gebeurt op vrijwel dezelfde manier als in VBA, maar dus eerst een referentie zetten naar Word z'n object library: (in VB.NET:)
(1)-- Open een nieuw project, en voeg meteen de referentie toe:
menu :: Project>Add Reference>COM>"Microsoft Word ... Object Library"
De code van dat nieuwe project op dat moment:
Voeg een textbox toe aan de form van het projectje
(2)-- Om het jezelf wat makkelijker te maken voeg je een shortcut naar de namespace van Word toe, typ hetvolgende erbij:
Code: Selecteer alles
Imports Microsoft.Office.Interop
Public Class Form1
End Class
Nu kan je wat makkelijker verwijzen naar objecten van Word, bijvoorbeeld:
(3)-- Een routine die de namen van alle formfields weergeeft en die routine wordt uitgevoerd bij het laden van de form:
Code: Selecteer alles
Imports Microsoft.Office.Interop
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Call ToonAlleFormFieldNamen()
End Sub
Private Sub ToonAlleFormFieldNamen()
Dim zWORD As New Word.Application, zDOC As Word.Document
Dim zFF As Word.FormField, zSTR As String = ""
zDOC = zWORD.Documents.Add("c:\z_zDoc\doc.doc")
For Each zFF In zDOC.FormFields
zSTR &= zFF.Name & vbCrLf
Next
TextBox1.Text = zSTR
zDOC.Close()
zWORD.Quit()
End Sub
End Class
Als je die subroutine aanroept, wordt hetvolgende getoond in als output in die textbox:
Text1
Text2
Text3
Text5
Text4
url_ftp
user_ftp
pass_ftp
url
url_mail
user_mail
pass_mail
(4)-- Het rechtstreeks veranderen van de FormField tekst doe je op dezelfde wijze als in VBA. Hier worden alle formfields gevuld met hun eigen naam, en het resultaat wordt dan opgeslagen als resultaatdoc.doc :
Code: Selecteer alles
Imports Microsoft.Office.Interop
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Call VulAlleFormFieldsMetHunEigenNaam()
End Sub
Private Sub VulAlleFormFieldsMetHunEigenNaam()
Dim zWORD As New Word.Application, zDOC As Word.Document
Dim zFF As Word.FormField, zSTR As String = ""
zDOC = zWORD.Documents.Add("c:\z_zDoc\doc.doc")
For Each zFF In zDOC.FormFields
zFF.Result = zFF.Name
zSTR &= zFF.Result & vbCrLf
Next
TextBox1.Text = zSTR
zDOC.SaveAs("c:\z_zDoc\resultaatdoc.doc")
zDOC.Close()
zWORD.Quit()
End Sub
End Class
Als je een individuele formfield wil aanpassen, doe je dat zoals in VBA:
zDOC.FormFields.Item("user_mail").Result = "
[email protected]"
of op deze manier:
zFF =zDOC.FormFields.Item("user_mail")
zFF.Result = "
[email protected]"
't Verschilt dus niet al te veel met VBA -- gewoon eerst die referentie zetten.