Thema Datum  Von Nutzer Rating
Antwort
Rot Excel VBA - Word Dokument durchsuchen und auswerten
02.04.2015 13:48:07 boerny
NotSolved
15.04.2015 09:04:13 lycone
NotSolved

Ansicht des Beitrags:
Von:
boerny
Datum:
02.04.2015 13:48:07
Views:
1338
Rating: Antwort:
  Ja
Thema:
Excel VBA - Word Dokument durchsuchen und auswerten

Hallo zusammen!

Ich versuche gerade mittels VBA ca. 150 Umfragen, die mit Word 2003 erstellt wurden, in Excel auszuwerten. Die Umfragen sind so aufgebaut, dass sie aus mehreren Tabellen bestehen. Jede Tabelle hat in der obersten Zeile eine Überschrift / Kategorie. In der Tabelle sind dann unterschiedlich viele Fragen, von denen ich mich aber pro Kategorie bzw. Tabelle aber nur für eine Frage interessiere. Genau diese soll dann ausgewertet werden.

Das Problem ist allerdings, dass die Kontrollkästchen, mit denen die Frage mit Ja oder Nein beantwortet wurde, in der ganzen Umfrage die identische Textmarke haben. Das Steuerelement für "Ja" heißt Kontrollkästchen6 und das Steuerelement für "Nein" heißt Kontrollkästchen. 

Mit meinem aktuellen Code kann ich auf ein Word Dokument zugreifen. Ich gebe dabei den Tabellen-Index und die Zeile an, in der die Frage steht, die für meine Auswertung relevant ist (z.B. Tabelle 1, Zeile 2). Leider ist auch die Formatierung der 150 Umfragen nicht immer identisch - es kann also sein, dass in einer anderen Umfrage in Tabelle 1 erst in Zeile 3 die für die Auswertung relevante Frage steht. Deswegen müsste mein Code angepasst werden, dass Suchbegriffe genutzt werden die sich auf die relevante Frage beziehen. Hier erstmal mein aktueller Code:

Private wdAnw As Object
Private wdDok As Object
Sub Stats()

'Pfad der zu bearbeitenden Datei angeben
'Anpassung des Dateipfaded ggf. anpassen!
  Pfad = "C:\Test.doc"
'Versuchen eine Verbindung zu Word herzustellen
  On Error Resume Next
  Set wdAnw = GetObject(, "Word.Application") 'Bestehende Word-Instanz suchen
  Select Case Err.Number
    Case 0 'Word-Instanz gefunden
    Case 429 'Word-Instanz nicht auffindbar
      Err.Clear
      Set wdAnw = CreateObject("Word.Application") 'Word-Instanz erzeugen
      If Err.Number > 0 Then
        BadOrHappyEnd Err.Number, Err.Description
        Exit Sub
      End If
    Case Else 'Unerwarteter Fehler
      BadOrHappyEnd Err.Number, Err.Description
      Exit Sub
  End Select
  On Error GoTo 0
  '
  wdAnw.Visible = True 'Word-Instanz sichtbar machen (Dokument wird geöffnet) -> nicht unbedingt nötig
  wdAnw.WindowState = 0
  
'Es wird überprüft ob das Dokument bereits geöffnet ist oder nicht.
'Anschließend wird die Verbindung zwischen Word und Excel erstellt
  On Error Resume Next
  Set wdDok = wdAnw.Documents.Open(Filename:=Pfad)
  If Err.Number > 0 Then 'Falls Dokument nicht existiert oder unerwarteter Fehler
    BadOrHappyEnd Err.Number, Err.Description
    Exit Sub
  End If
  On Error GoTo 0

'Im Folgenden werden die Daten an Excel übergeben
'Zugriff auf Tabelle 1 Zeile 3 - Kontrollkästchen 6 und Kontrollkästchen 7
    Cells(100, 2) = wdAnw.ActiveDocument.Tables(1).Rows(3).Range.FormFields.Item("Kontrollkästchen6").Result
    Cells(100, 3) = wdAnw.ActiveDocument.Tables(1).Rows(3).Range.FormFields.Item("Kontrollkästchen7").Result

'Zugriff auf Tabelle 2 Zeile 2 - Kontrollkästchen 6 und Kontrollkästchen 7
    Cells(101, 2) = wdAnw.ActiveDocument.Tables(2).Rows(2).Range.FormFields.Item("Kontrollkästchen6").Result
    Cells(101, 3) = wdAnw.ActiveDocument.Tables(2).Rows(2).Range.FormFields.Item("Kontrollkästchen7").Result

'Mögliche Fehlermeldung
BadOrHappyEnd Err.Number, Err.Description
  
'Interpretation der Ergebnisse
Range("B2").FormulaLocal = "=WENN(UND(B100=1;C100=0);""Ja"";WENN(UND(B100=0;C100=1);""Nein"";""nicht auswertbar""))"
Range("B3").FormulaLocal = "=WENN(UND(B101=1;C101=0);""Ja"";WENN(UND(B101=0;C101=1);""Nein"";""nicht auswertbar""))"

End Sub
Private Sub BadOrHappyEnd(rc As Long, fehler As String)
  If rc > 0 Then
    MsgBox fehler, vbExclamation
  End If
  Set wdDok = Nothing 'Aufräumen
  Set wdAnw = Nothing
End Sub

 

Ich stelle mir den Ablauf der Programmierung so vor, dass ich wie gehabt mit meinem Excel Sheet auf das Word Dokument zugreife. Diesen Teil des VBA Codes habe ich ja bereits und er funktioniert auch problemlos. Sobald eine Verbindung zwischen dem Excel Sheet und dem Word Dokument entstanden ist soll folgendes passieren:

1. Suche Tabelle mit passender Kategorie (jede Tabelle hat in der ersten Zeile eine Überschrift, allerdings will ich nicht jede Tabelle auswerten, sondern nur bestimmte Kategorien, die alle verschieden heißen) und weise einer Variablen den Tabellen-Index zu.

-> Beispiel: Suche nach Tabelle mit der Überschrift "Hausarbeit"

2. Innerhalb der Tabelle mit der Überschrift "Freizeit", suche die Zeile der Tabelle, die die für die Auswertung relevante Frage enthält. Weise einer zweiten Variablen den Zeilen-Index zu.

-> Beispiel: Suche die Zeile mit der Frage "Wird im Haushalt Abfall getrennt?" (Suchwort: "Abfall").

3. Die beiden ausgelesenen Variablen sollen dann übergeben werden, die beiden Kontrollkästchen ausgelesen werden und schließlich an Excel übergeben werden. Das soll dann mit folgendem Code geschehen:

Cells(100, 2) = wdAnw.ActiveDocument.Tables(VariableA).Rows(VariableB).Range.FormFields.Item("Kontrollkästchen6").Result    
Cells(100, 3) = wdAnw.ActiveDocument.Tables(VariableA).Rows(VariableB).Range.FormFields.Item("Kontrollkästchen7").Result

 

Ich bin wirklich ratlos wie ich in meinen Code die Suche nach der passenden Tabelle und anschließend Zeile realisieren kann.

Danke schonmal. Beste Grüße,

wuumbs


 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Excel VBA - Word Dokument durchsuchen und auswerten
02.04.2015 13:48:07 boerny
NotSolved
15.04.2015 09:04:13 lycone
NotSolved