Hallo Zusammen,
ich bin gerade auf ein Problem gestoßen. Unter Word 2010 konnte ich mir einfach das Inhaltsverzeichnis auslesen und die Seitenzahlen zwischenspeichern. Das habe ich mit folgendem Code gemacht:
public WordToc parseWordToc(Microsoft.Office.Interop.Word.Application wordApplication,
_Document wordDoc)
{
WordToc wordToc = new WordToc();
string[] tocSeparator = new string[] { "\r" };
string[] tocEntrySeparator = new string[] { "\t" };
wordApplication.Selection.Find.ClearFormatting();
foreach (Field f in wordDoc.Fields)
{
if (f.Type == WdFieldType.wdFieldTOC)
{
TableOfContents toc = wordDoc.TablesOfContents[f.Index];
toc.Range.Select();
Microsoft.Office.Interop.Word.Range r = toc.Range;
string[] entries = r.Text.Split(tocSeparator, StringSplitOptions.RemoveEmptyEntries);
foreach (var e in entries)
{
string[] entry = e.Split(tocEntrySeparator, StringSplitOptions.RemoveEmptyEntries);
WordTocEntry wordTocEntry = new WordTocEntry();
wordTocEntry.description = entry[0];
int pageNumber = -1;
bool successfullyParsed = int.TryParse(entry[1], out pageNumber);
if (successfullyParsed)
{
// Fehler
}
wordTocEntry.pagenumber = pageNumber;
wordToc.tocEntries.Add(wordTocEntry);
}
break;
}
}
return wordToc;
}
Soweit so gut. Nun wurde aber auf Office 2013 / Word 2013 umgestellt und nun funktioniert dieser Code nicht mehr, da ich zwar den Text mit Range.Text zurückbekomme, aber dieser ist ohne die Seitenzahl. Ich hab nun schon hin und her probiert, aber ich komme
auf keine wirkliche Lösung.
Hat vielleicht jemand eine Idee, an was das liegen könnte?
Viele Grüße
MS-Tech