Save document with custom properties with actxserver Word
Show older comments
The following script shall change custom properties of a word document using the activexserver syntax for Microsoft Word.
%% Initiallize Word Connection
hdlWord = actxserver('Word.Application');
hdlWord.Visible = true;
%% File and Location
fullLocation = 'C:\Users\Name\Documents\MATLAB\PropTest.docx';
hdlDoc = hdlWord.Documents.Open(fullLocation);
%% Property Change
hdlProp = get(hdlDoc.CustomDocumentProperties, 'Item', 'Property1');
get(hdlProp,'Value');
set(hdlProp,'Value','nice'); % saved as "jealous" before running the script
%% Save Doc
hdlWord.ActiveDocument.SaveAs2(fullLocation)
hdlDoc.Close();
hdlWord.Quit();
The property change itself is working. Sadly, the script is not saving the document. There is no error or warning given out.
If I comment the close functions and click save manually it works fine.
If I save the document as a another file the properties are changed and saved. Therefore, a work around by deleting and renaming and so on would work.
Could someone help me out on how to save the opened document and close it by script?
5 Comments
Umar
on 10 Jul 2024
Hi Philipp,
You can add a line of code to save the document after the property change is made. You can use the following syntax:
hdlDoc.Save();
This will save the changes made to the document. You can also add a line of code to close the document after it has been saved:
hdlDoc.Close();
With these modifications, your updated script should look like this:
%% Initiallize Word Connection
hdlWord = actxserver('Word.Application');
hdlWord.Visible = true;
%% File and Location
fullLocation = 'C:\Users\Name\Documents\MATLAB\PropTest.docx';
hdlDoc = hdlWord.Documents.Open(fullLocation);
%% Property Change
hdlProp = get(hdlDoc.CustomDocumentProperties, 'Item', 'Property1');
get(hdlProp,'Value');
set(hdlProp,'Value','nice'); % saved as "jealous" before running the script
%% Save Doc
hdlDoc.Save();
hdlDoc.Close();
hdlWord.Quit();
By adding these lines of code, your script should now be able to save the changes made to the Word document and close it automatically. If you continue to experience issues, you may want to check that you have appropriate permissions to save files in that directory or consider using a different file location. Hope this will help resolve your problem. Please let me know if you have further questions.
Philipp
on 10 Jul 2024
Umar
on 10 Jul 2024
Hi Phillip,
Try introducing a delay after calling the Save() function. This delay allows time for the changes to be processed and saved before closing the document. By adding a short delay (e.g., pause(1)) after the Save() function, you allow sufficient time for the changes to be saved before closing and quitting the Word document. Please update me about test results.
Philipp
on 11 Jul 2024
Umar
on 11 Jul 2024
Hi Philipp,
Mario just posted a comment about resolving this issue. Please try his suggested solution and update us about test results.
Answers (1)
Mario Malic
on 10 Jul 2024
1 vote
4 Comments
Philipp
on 11 Jul 2024
Umar
on 11 Jul 2024
Finally issue has been resolved. Thanks Mario for your contribution. This is what I like about Mathworks platform, team work, help out each other, share knowledge. Philipp, time to celebrate 🎉.
Mario Malic
on 15 Jul 2024
The flag is not ment to be used for these purposes, so it's better to remove it.
Mario Malic
on 15 Jul 2024
If the answer solved your problem, it should be marked as accepted.
Categories
Find more on Introduction to Installation and Licensing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!