Word ActiveX Delete content underneath a heading
4 views (last 30 days)
I am using word to store images of some measurament.
everything works fine but I would like to add some automation.
By now I am doing the following:
actx_word = actxserver('Word.Application');
actx_word.Visible = true;
% Open existing document
word_handle = invoke(actx_word.Documents,'Open',fullfile(word_file_p));
%Here I would like to delete the content of the heading
WordUtils.WordGoTo(actx_word, 11, 1, Nr)%Go to specific heading in document
WordUtils.WordGoTo(actx_word_p, 3, 2, Nr)%Go one line down
hgexport(fig, '-clipboard')%Copy figure image to Clipboard
invoke(actx_word.Selection,'Paste');%Paste it to word document
Now my Problem is I would like to rewrite the content of the heading. So delete first the content underneath it. Is there a easy way for doing that ?
Thomas Jensen on 10 May 2021
Working with Word documents in MATLAB is not that easy indeed, even a simple task as the one you described might be a nightmare.
I am not used to the WordUtils functions, but that is how I would approach this issue:
You can get the objects returned by the ActiveX Library, for example, to open the document you can use the line:
wordDocument = actx_word.Documents.Open(fullfile(word_file_p));
If you know the text of the heading and it is unique int the document, you can search for the text and replace it by a different text:
wordRange = wordDocument.Content;
wordRange.Text = 'NEW_TEXT';
I usually create a unique string in the template with a unique string, like %%UNIQUE_STRING%% and I search for this string to replace it using the method I explained.
You can also create the heading by script:
wordRange.Text = 'HEADING_TEXT';
wordRange.Style = -2; % wdStyleHeading1
I hope these two approaches can already give you some directions.