Hi
How can you remove one of the text sections in the document attached?
One piece of text displays if a calculation in my vb.net code is made and the other piece of text should display if the calculation is another value
Its an either / or calculation that is made in vb.net code
I am using the docBuilder method
for replacing fields found in the word document which is working great
I can’t immediately see how to select some text and delete it though?
here is a code sample of what I am using for replacing simple fields in the word doc
docBuilder = New DocumentBuilder(docWordTemplate)
docBuilder.Document.Range.Replace("[opQuoteId]", CStr(objOrder.quoteId), False, False)
Thanks for your inquiry. I think, you can easily achieve what you need using IF field. Also, I think, it would be better to use mergefield instead of placeholder. I modified your template (please see the attached file). You should press Alt+F9 to see field code in the document.
Here is code I used for testing:
// Open document.
Document doc = new Document(@"Test001\DeletingText.doc");
// Execute mail merge.
doc.MailMerge.Execute(new string[] { "test" }, new object[] { "1" }); // Condition will be true.
// doc.MailMerge.Execute(new string[] { "test" }, new object[] { "2" }); // Condition will be false.
// Save output.
doc.Save(@"Test001\out.doc");
Thanks for your quick reply
The mail merge is one I am considering now Do you think it would be possible if I created tags to identify the start and end sections, then search for these and then pass the search result to a range to delete it? eg something like this in the word document:
[start section] my text [end section] then in the vb.net I need these type of commands:
docBuilder.document.search('[start section]' & wild set of characters & '[end section]')
make this the active range some how docBuilder.range.delete ?
Thanks for your inquiry. If you need to remove part of content programmatically, I think it would be easier to achieve using bookmark. Just put content that is supposed to be removed into a bookmark and use code like the following to remove the bookmarked content:
Hi Timothy,
Thanks for your inquiry.
You can use a simple Regex like below:
doc.Range.Replace(new Regex("StartText.*EndText"), new ReplaceEvaluator(), false);
However since most likely the matching text will span over many Run nodes even many paragraphs you will need to use a ReplacingCallback in order to handle what you are trying to achieve.
There is no way to get a “range” from the selected text unless you use the technique from Alexey’s suggestion and insert a new bookmark around the matching text in the ReplaceEvaluator and then set the text to empty. You could also do this without inserting a bookmark by using the code from this page here in your replacing logic then you can easily interact with the matching Run nodes. In your case instead of highlighting the matching nodes you will want to remove them.
Thanks,
Thanks for your inquiry. There is no simple way to remove/replace content between placeholders. However, you can try using the technique suggested in the following forum thread: https://forum.aspose.com/t/range-replace-regex/67656
Hope this helps.
Best regards,