Excel ActiveX slow and stealing focus

19 次查看(过去 30 天)
Jan
Jan 2023-7-19
回答: Jan 2023-7-24
For several years now I'm using an activex server to export data to Excel spreadsheets. I recently upgraded to Matlab R2022b and since then there are two annoying things to this:
  • Saving the workbook has become slower
  • Saving the workbook shows a progress popup which steals the focus from all other applications running
I guess I can live with the slowdown (though suggestions to improve this are welcome), but the focus stealing makes it impossible to let my program run in the background. Can I somehow disable or work around the focus stealing behaviour?
I'm using the activex server somewhat like this:
hExcel = actxserver('excel.application');
for file = 1:many
hWorkbook = hExcel.Workbooks.Add();
% export data and formatting to worksheet
%
hWorkbook.SaveAs("TheFileName"); % This is where the popup happens
hWorkbook.Close(false);
end
hExcel.Quit;
hExcel.delete;
Update:
Just now noticed a question mark on the popup, which redirects me to this Microsoft support page. The title of the popup I see is "saving", so I looked at the "Opening or daving files" section. Although there are no external references as far as I know, just to be sure I added:
hWorkbook = hExcel.Workbooks.Add();
hWorkbook.UpdateRemoteReferences = false;
hWorkbook.UpdateLinks = 2; % xlUpdateLinksNever == 2 Embedded OLE links are never updated for the specified workbook
But that does not help.

回答(2 个)

Image Analyst
Image Analyst 2023-7-19
What is the visibility property? Try making it invisible right after you get it.
hExcel.Visible = false;
or something like that.
  7 个评论
Image Analyst
Image Analyst 2023-7-21
What do you see if you just start Excel by itself, without starting MATLAB? Does it ask you to login?
Can you ask your IT people if they can get a standalone version of Office that doesn't require you to login? With our IT, they could.
Jan
Jan 2023-7-24
There's no login prompt, it just starts.
I think I already have a standalone version, but I'll double check with IT.

请先登录,再进行评论。


Jan
Jan 2023-7-24
Apparently this is caused by saving to a network drive. I worked around it by first saving the Excel worksheet to a local temporary file, then copying the file to the final destination.
Now the popup is no longer shown, and as a bonus it is also faster. Win-win for me ;)

产品


版本

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by