Hallo,
ich versuche gerade aus einem Word Dokument mir alle Felder auslesen zu lassen und dann in einer Listbox anzeigen zu lassen. Unter VBA habe ich das hinbekommen. Jedoch will ich keine Anwendung unter VBA sonder VB.net erstellen.
Nutze hierzu gerade Visual Basic 2010 Express.
In meinem Word Dokument haben die Felder verschiedene Namen (z.B. Firma) und hinter diesem Namen verbirgt sich ein Code.
Ich möchte nun das ich per FileDialog mir die Word Datei auswähle bzw. vorher festlege welche Word Datei ich auslesen möchte und mir dann die Felder in einer Listbox anzeigen lasse.
Bisher habe ich folgenden Code, weiß aber nun nicht weiter wie ich die Word Felder der Datei ansprechen kann.
Zu Beginn habe ich folgende Namespaces eingefügt:
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word
Imports System.Windows.Forms
Imports Microsoft.Office.Tools.Word
Imports System.IO
Mein bisheriger Code beim Klick auf Öffnen:
Private Sub cmdSelectWord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSelectWord.Click
Dim oWordApp As Word.Application
Dim oWord As Word.Document
oWordApp = New Word.Application
' Öffnen der Word Datei
With openWordFile
.Filter = "Word 2007 (*.docx)|*.docx|Word 2003 (*.doc)|*.doc|Alle Dateien(*.*)|*.*" ' Setzt den Filter
.FilterIndex = 2 <font color="#008000"> ' Filter steht auf Word 2003 (2)</font>
.FileName = ""
Dim dlgResult1 As DialogResult = .ShowDialog()
If dlgResult1 = System.Windows.Forms.DialogResult.Cancel Then
Exit Sub '<font color="#008000"> Beim Klick auf Abbrechen wird die Methode verlassen
</font>
End If
End With
Try
oWord = oWordApp.Documents.Add("C:\Users\Benutzer\Desktop\Test2.doc")
oWordApp.Visible = True
oWordApp.Activate()
Catch ex As Exception
MessageBox.Show(ex.Message, "Fehler aufgetreten", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
<b> <font color="#008000"> ' Hier sollen alle Felder durchgezählt und die Namen der Felder in meine Listbox geschrieben werden</font></b>
End SubWäre super wenn mir hier jemand helfen könnte.
Gruß
Yannick
PS: Hier findet ihr meinen benutzten VBA Code (dieser hatte aber nur die Codes und nicht die Namen der Felder ausgelesen):
Private Sub cmdSelect_Click()
Dim fileopen As FileDialog
Dim i As Integer
Dim fld As Field
Dim wrd As Word.Application
Dim doc As Word.Document
Set wrd = GetObject(, "word.application")
Set fileopen = Application.FileDialog(msoFileDialogOpen)
With fileopen
.AllowMultiSelect = False
.InitialFileName = "C:\" ' Start-Such-Verzeichnis
.Filters.Clear ' Löscht den aktuellen Filter
.Filters.Add "Alle Dateien", "*.*"
.Filters.Add "Word 2003", "*.doc;*.dot"
.Filters.Add "Word 2007 & 2010", "*.docx;*.docm;*.dot"
.FilterIndex = 2 ' Setzt den FilterIndex - 1 ( Alle Dateien ) 2 ( Word 2003 ) 3 ( Word 2007 )
.Title = "Select your File" ' Titel
If .Show Then
For Each fld In ActiveDocument.Fields
Fields.AddItem fld.Code
i = i + 1
Next
End If
Fields.ListIndex = 0
TextBox1.Value = i
End With
End Sub