Word Range.Find bleibt beim Durchsuchen von verstecktem Text und beim Hinzufügen von Kommentaren in derselben TabellenzeC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Word Range.Find bleibt beim Durchsuchen von verstecktem Text und beim Hinzufügen von Kommentaren in derselben Tabellenze

Post by Anonymous »

Ich schreibe eine Funktion, um versteckten Text in einem Word-Dokument zu finden und ihn mit Kommentaren zu versehen. Dazu verwende ich Word Find.
Wenn in einer Tabelle ein versteckter Text gefunden wird, wird der Bereich nach dem Einfügen des Kommentars für einen versteckten Text beeinträchtigt und ich bin mir jetzt sicher, wie ich weitermachen soll. Meine aktuelle Logik bleibt für immer im allerersten versteckten Text in der Tabelle hängen.
Das ist mein Code:

Code: Select all

private void RemoveHiddenText()
{
if (cleanUpProperties.SelectedcmbHiddenText == 2)
{
return;
}

Word.Range searchRange = wordDocument.Content.Duplicate; // Ensures full document range
searchRange.Start = 0;
searchRange.End = wordDocument.Content.End;

Word.Find find = searchRange.Find;
find.ClearFormatting();
find.Font.Hidden = 1; // True
find.Text = "";
find.Forward = true;
find.Wrap = Word.WdFindWrap.wdFindStop;

string commentMessage = "";
Word.Comment comment = null;

while (find.Execute())
{
switch (cleanUpProperties.SelectedcmbHiddenText)
{
case 0:
commentMessage = Helper.GetLanguageString("ABC_RemoveHiddenTextsComment") + $"\"{searchRange.Text}\"";
comment = searchRange.Comments.Add(searchRange, commentMessage);
break;

case 1:
commentMessage = Helper.GetLanguageString("ABC_cmbRemoveHiddenTextsUnhide");
comment = searchRange.Comments.Add(searchRange, Helper.GetLanguageString("ABC_cmbRemoveHiddenTextsUnhide"));
searchRange.Font.Hidden = 0;
break;

default:
break;
}

if ((bool)searchRange.Information[Word.WdInformation.wdWithInTable])
{
int movingForwardBylength = 1;
searchRange.SetRange(searchRange.End + movingForwardBylength, wordDocument.Content.End);
}
else
{
// Move the search range forward to avoid infinite loop
searchRange.SetRange(searchRange.End, wordDocument.Content.End);
}

// Reconfigure Find for the new range
find = searchRange.Find;
find.ClearFormatting();

find.Font.Hidden = 1;
find.Text = "";
find.Forward = true;
find.Wrap = Word.WdFindWrap.wdFindStop;
}
}
Jedes Mal, wenn ein Kommentar hinzugefügt wird, wird wordDocument.Content.End um eins erhöht. Aber MovingForwardBylength ist definitiv eine große Zahl, nicht 1. Aber ich konnte sie nicht finden. Oder es liegt möglicherweise ein anderes logisches Problem in meinem Code vor.
Wie kann ich das beheben?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post