VBA: Formatierungsvorlage finden & Inhalt in Excel

Hallo,

folgende Problemstellung:
Ich habe in einem Word-Dokument eine Tabelle, in der manche Zellen eine bestimmte Formatvorlage enthalten, nennen wir diese Formatvorlage mal ‚MeineMarkierung‘. Diese Formatvorlage enthält erschwerend noch eine automatische Nummerierung.

Ich möchte gerne

  • Im Dokument nach der Formatvorlage ‚MeineMarkierung‘ suchen
  • den gesamten Text, der an der Stelle mit dieser Formatvorlage formatiert ist, auslesen
    – inklusive der zugehörigen Nummer (!!!)
    – in eine neu anzulegende Exceldatei schreiben
    – die Zeilen- und Spaltennummer der betreffenden Tabellenzelle wissen

Danach möchte ich diese Punkte für alle folgenden Stellen im Dokument abarbeiten wo die Formatvorlage ‚MeineMarkierung‘ wieder auftritt… bis Dokumentende.

Danke für jeden input!!!

Hi… scheint ja eine harte Nuss zu sein.

Wäre auch dankbar für den Hinweis welcher Teil des Problemes der so schwierig zu lösen ist, vielleicht kann ich dann die Organisation der Wordtabelle anpassen:

Liegt das Problem im Suchen der Formatvorlage? Das Markieren dieses Textes? Das Einlesen des formatierten Textes inklusive Nummerierung?

(… sind die Punkte die mir vor allem Kopfzerbrechen machen)

Danke im voraus!!!

Moin, Snoopy,

  • Im Dokument nach der Formatvorlage ‚MeineMarkierung‘ suchen

öffne den Makro-Rekorder, zeichne den Suchvorgang auf und speichere das Makro erstmal ab. In VBA baust Du darüber eine Schleife à la

 Call SucheFormatierung (Formatname)
 While rc
 ... ' Isoliere den Text
 ... ' Schreib den Text in Exceldatei 
 Call SucheFormatierung (Formatname)
 Wend
  • den gesamten Text, der an der Stelle mit dieser
    Formatvorlage formatiert ist, auslesen

Dazu musst Du wissen, wo dieser Text aufhört.

– inklusive der zugehörigen Nummer (!!!)

Vergiss es. Diese Nummer ist eigentlich gar nicht vorhanden, sie wird irgendwo in den Tiefen von Word errechnet.

– in eine neu anzulegende Exceldatei schreiben

Such mal in der Hilfe nach Automatisierung.

– die Zeilen- und Spaltennummer der betreffenden
Tabellenzelle wissen

Das verstehe ich jetzt nicht. Wenn Du aus dem Text eine Exceldatei machst, steht der Text in A1.

Danach möchte ich diese Punkte für alle folgenden Stellen im
Dokument abarbeiten wo die Formatvorlage ‚MeineMarkierung‘
wieder auftritt… bis Dokumentende.

Das hatten wir schon: Schleife basteln.

Gruß Ralf

Hallo Ralf,

danke für die Hilfe!

  • Im Dokument nach der Formatvorlage ‚MeineMarkierung‘ suchen

öffne den Makro-Rekorder, zeichne den Suchvorgang auf und
speichere das Makro erstmal ab

Hatte ich gemacht und es funktionierte nicht. Interessanterweise hat der Makrorecorder bei der Suche nach beliebigem Text (.text="") auch noch eine Formatierungsvorgabe für den Textrahmen einfügt. Und damit hat er dann nichts gefunden. --> Gelöst.

  • den gesamten Text, der an der Stelle mit dieser
    Formatvorlage formatiert ist, auslesen

Dazu musst Du wissen, wo dieser Text aufhört.

Die Suche markiert den ganzen Text in der Formatvorlage, prima.

– inklusive der zugehörigen Nummer (!!!)

Vergiss es. Diese Nummer ist eigentlich gar nicht vorhanden,
sie wird irgendwo in den Tiefen von Word errechnet.

Wenn ich den Text der selection auslese habe ich den Text ohne Nummer, ein workaround könnte aber das Clipboard sein: Wenn ich die selection ins clipboard kopiere und dann per paste special (wdPlainTextOnly) einfüge ist die Nummer mit da. Was mir jetzt Schwierigkeiten macht ist das auslesen des Clipboards in eine Variable (dafür mache ich aber einen neuen Thread auf, dieser hier passt dann vom Thema nicht mehr.

– in eine neu anzulegende Exceldatei schreiben

Such mal in der Hilfe nach Automatisierung.

jepp, mache ich.

– die Zeilen- und Spaltennummer der betreffenden
Tabellenzelle wissen

Das verstehe ich jetzt nicht. Wenn Du aus dem Text eine
Exceldatei machst, steht der Text in A1.

Ich brauche für die weitere Textbearbeitung die Zelle in der WORD-Datei. Für Excel war’s schon klar. Ich bringe das aber auch in ein separates Thema neu ein.

Gruß Ralf

Vielen Dank nochmal,

Udo