1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| internal Word.Application WA_Application = null ;
internal Word.Document WA_Document = null ;
private static object TrueObject = true ;
private static object FalseObject = false ;
internal static object MissingObject = System.Reflection.Missing.Value ;
internal bool Wa_ReplaceInAllDocument(string FindText,string ReplaceText)
{ // replaces text also in Headers and Footers
Word.WdViewType SaveViewType=WA_Document.ActiveWindow.View.Type;
bool Result=false ;
Word.Range [] Ranges=Wa_DocumentRangeIncludingFootersAndHeaders() ;
for (int i=0;i<Ranges.Length;i++) Result=Result | WA_Replace(Ranges[i],FindText,ReplaceText) ;
WA_Document.ActiveWindow.View.Type=SaveViewType ;
return Result ;
}
internal Word.Range [] Wa_DocumentRangeIncludingFootersAndHeaders()
{
int RangeCount=1 ; // At least the Document Range
for (int i=1;i<=WA_Document.Sections.Count;i++) RangeCount+=WA_Document.Sections.Item(i).Headers.Count + WA_Document.Sections.Item(i).Footers.Count ;
Word.Range [] Result= new Word.Range [RangeCount] ;
Result[0]=WA_Document.Range(ref MissingObject,ref MissingObject) ;
RangeCount=1 ;
for (int i=1;i<=WA_Document.Sections.Count;i++)
{
for (int hf=0;hf<2;hf++)
{
Word.HeadersFooters HeadersFooters= hf==0 ? WA_Document.Sections.Item(i).Headers : WA_Document.Sections.Item(i).Footers ;
if (HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary )!=null)
Result[RangeCount++] = HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary ).Range ;
if (HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage)!=null)
Result[RangeCount++] = HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage).Range ;
if (HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages)!=null)
Result[RangeCount++] = HeadersFooters.Item(Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages).Range ;
}
}
return Result ;
}
internal bool WA_Replace(Word.Range Range,string FindText,string ReplaceText) {
bool Result=Range!=null ;
if (Result)
{
object FindTextObject = FindText ;
object ReplaceTextObject= null ;
if ((Object)ReplaceText!=null) ReplaceText = ReplaceText.Replace(SxStrings.CRLF,"^p");
while ((Object)ReplaceText!=null)
{
if (ReplaceText.Length>250)
{
int rlength = 250-FindText.Length;
if (ReplaceText.Substring(0,rlength).EndsWith("^")) rlength--;
ReplaceTextObject = ReplaceText.Substring(0,rlength) + FindText;
ReplaceText = ReplaceText.Substring(rlength);
}
else
{
ReplaceTextObject = ReplaceText;
ReplaceText = null;
}
object ReplaceObject = 2 ; // 2=ReplaceAll
Range.Select() ;
Result= Range.Find.Execute(
ref FindTextObject , ref MissingObject, ref TrueObject , // FindText , Matchcase , WholeWord
ref MissingObject , ref MissingObject, ref MissingObject , // WildCard , MatchSoundsLike, MatchAllWordsForm
ref TrueObject , ref MissingObject, ref MissingObject , // Forward , Wrap , Format
ref ReplaceTextObject, ref ReplaceObject, ref MissingObject , // ReplaceWith , Replace , MatchKasida
ref TrueObject , ref MissingObject, ref MissingObject); // MatchDiacritics,MatchAlefHamza , MatchControl
}
}
return Result ;
} |
Partager