J
Jron
Hello,
I want to remove the hidden text from a Word document and i have to
use late binding.
Tried early binding but that caused errors in Office 2007 (some error
about trying to write to protected memory).
So now I'm trying to do the same thing with late binding. I have no
problem opening the Word document and even
the Find works properly but when I try to remove hidden text it does
not seem to work.
Early binding code:
bool bShowHidden = wApp.ActiveWindow.View.ShowHiddenText;
wApp.ActiveWindow.View.ShowHiddenText = true;
Word.Find findObject = wApp.Selection.Find;
findObject.ClearFormatting();
findObject.Font.Hidden = 1;
findObject.Replacement.ClearFormatting();
findObject.Text = "";
findObject.Replacement.Text = "";
findObject.Forward = true;
findObject.Wrap = Word.WdFindWrap.wdFindContinue;
findObject.Format = true;
findObject.MatchCase = false;
findObject.MatchWholeWord = false;
findObject.MatchWildcards = false;
findObject.MatchSoundsLike = false;
findObject.MatchAllWordForms = false;
object replaceAll = Word.WdReplace.wdReplaceAll;
findObject.Execute(ref missing, ref missing, ref missing,
ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing,
ref replaceAll, ref missing, ref
missing, ref missing, ref missing);
foreach (Microsoft.Office.Interop.Word.Table myTable in
wApp.ActiveDocument.Tables)
{
if ((myTable.Range.Font.Hidden == 1) ||
(myTable.Range.Font.Hidden == -1))
{
myTable.Delete();
}
}
wApp.ActiveWindow.View.ShowHiddenText = bShowHidden;
late binding code:
Object ActiveWindow = wApp.GetType().InvokeMember("ActiveWindow",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.GetProperty, null, wApp, null);
Object View = ActiveWindow.GetType().InvokeMember("View",
System.Reflection.BindingFlags.GetProperty, null, ActiveWindow, null);
Object[] ShowHiddenTextParameter = new Object[1];
ShowHiddenTextParameter[0] = true;
Object ShowHidden = View.GetType().InvokeMember("ShowHiddenText",
System.Reflection.BindingFlags.GetProperty, null, View, null);
View.GetType().InvokeMember("ShowHiddenText",
System.Reflection.BindingFlags.SetProperty, null, View,
ShowHiddenTextParameter);
Object Selection = ActiveWindow.GetType
().InvokeMember("Selection",
System.Reflection.BindingFlags.GetProperty, null, ActiveWindow, null);
Object Find = Selection.GetType().InvokeMember
("Find", System.Reflection.BindingFlags.GetProperty, null, Selection,
null);
Find.GetType().InvokeMember("ClearFormatting",
System.Reflection.BindingFlags.InvokeMethod, null, Find, null);
Object Font = Find.GetType().InvokeMember
("Font", System.Reflection.BindingFlags.GetProperty, null, Find,
null);
Object[] FontParameter = new Object[1];
FontParameter[0] = 1;
Font.GetType().InvokeMember("Hidden",
System.Reflection.BindingFlags.SetProperty, null, Font,
FontParameter);
Object Hidden = Font.GetType().InvokeMember
("Hidden", System.Reflection.BindingFlags.GetProperty, null, Font,
null);
Object Replacement = Find.GetType
().InvokeMember("Replacement",
System.Reflection.BindingFlags.GetProperty, null, Find, null);
Replacement.GetType().InvokeMember
("ClearFormatting", System.Reflection.BindingFlags.InvokeMethod, null,
Replacement, null);
object[] _parameters;
_parameters = new object[15];
_parameters[0] = "";
_parameters[1] = false;
_parameters[2] = false;
_parameters[3] = false;
_parameters[4] = false;
_parameters[5] = false;
_parameters[6] = true;
_parameters[7] =
Word.WdFindWrap.wdFindContinue;
_parameters[8] = false;
_parameters[9] = "";
_parameters[10] = Word.WdReplace.wdReplaceAll;
_parameters[11] = false;
_parameters[12] = false;
_parameters[13] = false;
_parameters[14] = false;
Find.GetType().InvokeMember("Execute",
System.Reflection.BindingFlags.InvokeMethod, null, Find,
_parameters);
Object[] ShowHiddenTextParameter2 = new Object
[1];
ShowHiddenTextParameter2[0] = ShowHidden;
View.GetType().InvokeMember("ShowHiddenText",
System.Reflection.BindingFlags.SetProperty, null, View,
ShowHiddenTextParameter2);
So what am i doing wrong here? If i just find in a word in the search
it works but I want to remove the hidden text.
I want to remove the hidden text from a Word document and i have to
use late binding.
Tried early binding but that caused errors in Office 2007 (some error
about trying to write to protected memory).
So now I'm trying to do the same thing with late binding. I have no
problem opening the Word document and even
the Find works properly but when I try to remove hidden text it does
not seem to work.
Early binding code:
bool bShowHidden = wApp.ActiveWindow.View.ShowHiddenText;
wApp.ActiveWindow.View.ShowHiddenText = true;
Word.Find findObject = wApp.Selection.Find;
findObject.ClearFormatting();
findObject.Font.Hidden = 1;
findObject.Replacement.ClearFormatting();
findObject.Text = "";
findObject.Replacement.Text = "";
findObject.Forward = true;
findObject.Wrap = Word.WdFindWrap.wdFindContinue;
findObject.Format = true;
findObject.MatchCase = false;
findObject.MatchWholeWord = false;
findObject.MatchWildcards = false;
findObject.MatchSoundsLike = false;
findObject.MatchAllWordForms = false;
object replaceAll = Word.WdReplace.wdReplaceAll;
findObject.Execute(ref missing, ref missing, ref missing,
ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing,
ref replaceAll, ref missing, ref
missing, ref missing, ref missing);
foreach (Microsoft.Office.Interop.Word.Table myTable in
wApp.ActiveDocument.Tables)
{
if ((myTable.Range.Font.Hidden == 1) ||
(myTable.Range.Font.Hidden == -1))
{
myTable.Delete();
}
}
wApp.ActiveWindow.View.ShowHiddenText = bShowHidden;
late binding code:
Object ActiveWindow = wApp.GetType().InvokeMember("ActiveWindow",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.GetProperty, null, wApp, null);
Object View = ActiveWindow.GetType().InvokeMember("View",
System.Reflection.BindingFlags.GetProperty, null, ActiveWindow, null);
Object[] ShowHiddenTextParameter = new Object[1];
ShowHiddenTextParameter[0] = true;
Object ShowHidden = View.GetType().InvokeMember("ShowHiddenText",
System.Reflection.BindingFlags.GetProperty, null, View, null);
View.GetType().InvokeMember("ShowHiddenText",
System.Reflection.BindingFlags.SetProperty, null, View,
ShowHiddenTextParameter);
Object Selection = ActiveWindow.GetType
().InvokeMember("Selection",
System.Reflection.BindingFlags.GetProperty, null, ActiveWindow, null);
Object Find = Selection.GetType().InvokeMember
("Find", System.Reflection.BindingFlags.GetProperty, null, Selection,
null);
Find.GetType().InvokeMember("ClearFormatting",
System.Reflection.BindingFlags.InvokeMethod, null, Find, null);
Object Font = Find.GetType().InvokeMember
("Font", System.Reflection.BindingFlags.GetProperty, null, Find,
null);
Object[] FontParameter = new Object[1];
FontParameter[0] = 1;
Font.GetType().InvokeMember("Hidden",
System.Reflection.BindingFlags.SetProperty, null, Font,
FontParameter);
Object Hidden = Font.GetType().InvokeMember
("Hidden", System.Reflection.BindingFlags.GetProperty, null, Font,
null);
Object Replacement = Find.GetType
().InvokeMember("Replacement",
System.Reflection.BindingFlags.GetProperty, null, Find, null);
Replacement.GetType().InvokeMember
("ClearFormatting", System.Reflection.BindingFlags.InvokeMethod, null,
Replacement, null);
object[] _parameters;
_parameters = new object[15];
_parameters[0] = "";
_parameters[1] = false;
_parameters[2] = false;
_parameters[3] = false;
_parameters[4] = false;
_parameters[5] = false;
_parameters[6] = true;
_parameters[7] =
Word.WdFindWrap.wdFindContinue;
_parameters[8] = false;
_parameters[9] = "";
_parameters[10] = Word.WdReplace.wdReplaceAll;
_parameters[11] = false;
_parameters[12] = false;
_parameters[13] = false;
_parameters[14] = false;
Find.GetType().InvokeMember("Execute",
System.Reflection.BindingFlags.InvokeMethod, null, Find,
_parameters);
Object[] ShowHiddenTextParameter2 = new Object
[1];
ShowHiddenTextParameter2[0] = ShowHidden;
View.GetType().InvokeMember("ShowHiddenText",
System.Reflection.BindingFlags.SetProperty, null, View,
ShowHiddenTextParameter2);
So what am i doing wrong here? If i just find in a word in the search
it works but I want to remove the hidden text.