Word document "Saveas2()" method no longer working
이전 댓글 표시
As of the past few days, I seem to be no longer able to save word documents created through matlab. Several months ago I ran the following script which opens an existing word document and saves it as another document.
reportPath = 'Table_out.docx';
templateName = append(pwd, '\Table_Inject_Test.docx');
actx_word = actxserver('Word.Application');
actx_word.Visible = true;
trace(actx_word.Visible);
wordTemplate = actx_word.Documents.Open(templateName); % Open template
wordTemplate.SaveAs2(reportPath); % Save copy as report
Once I started getting this error in another project, I reverted back to this script to check it wasn't something I had done within the word template to cause the error.
However when I try to run the same script now, I get the following error:
% Unrecognized method, property, or field 'SaveAs2' for class
% 'Interface.0002096B_0000_0000_C000_000000000046'.
% Error in tableinjecttest2 (line 7)
% wordTemplate.SaveAs2(reportPath); % Save copy as report
Has something changed within the WordInterface object? I see there is a 'saveobj' method but that doesn't seem to save the document either. That just gives me a different error:
% Unable to resolve the name 'wordParent.saveobj'.
%
% Error in tableInjectTest (line 22)
% wordTemplate.saveobj(reportPath)
댓글 수: 4
dpb
2025년 6월 18일
That the error seems to think the function is a script implies there must be an alias or the builtin function has been inadvertently overwritten.
See what
which -all actxserver
returns; if there is more than the one in the winfun toolbox folder, then that will be the problem...remove/rename it to not clash.
If there isn't the alias, see what
type actxserver
shows...it should show that the builtin is indeed, a function starting off something like
>> type actxserver.m
function h = actxserver(progID, varargin)
%ACTXSERVER Creates a COM Automation server.
% H = ACTXSERVER('PROGID') Creates a local or remote COM Automation server
% where PROGID is the programmatic identifier of the COM server and H is
% the handle of the server's default interface.
that it is, indeed, a function, not a script. It not, something is munged...
Alex
2025년 6월 18일
dpb
2025년 6월 18일
"... function h = actxserver(progID, varargin) text doesn't appear at the top of the output."
That's because built-in functions don't have the source code available as with the m-file.
This then is a bug when Mathworks built/shipped the builtin version. Submit an official bug report..
If you have an earlier release, a temporary workaround could be to copy the m-file into a location on your working path above the toolboxes to use the prior version instead.
Alex
2025년 6월 19일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Use COM Objects in MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!