我是在matlab中使用activex控件的新手。我试图控制word文档。我想,我需要在VBA语法和Matlab之间进行翻译。如何在matlab中编写以下代码?
Sub macro()
With CaptionLabels("Table")
.NumberStyle = wdCaptionNumberStyleArabic
.IncludeChapterNumber = True
.ChapterStyleLevel = 1
.Separator = wdSeparatorHyphen
End With
Selection.InsertCaption Label:="Table", TitleAutoText:="", Title:="", _
Position:=wdCaptionPositionAbove, ExcludeLabel:=0
End Sub
谢谢,我查看了帮助和来源,但我仍然感觉很密集。我希望能够在自动报告中控制字幕编号和字幕文本。我正在使用表格和数字。我只是无法理解如何编写添加字幕的代码。
以下代码让我分道扬..但我无法控制编号风格等。我试图找出activex结构,但我无法理解它。特别是,特别是上面的VB子程序的第一位。
% Start an ActiveX session with Word
hdlActiveX = actxserver('Word.Application');
hdlActiveX.Visible = true;
hdlWordDoc = invoke(hdlActiveX.Documents, 'Add');
hdlActiveX.Selection.InsertCaption('Table',captiontext);
答案 0 :(得分:2)
经过一番摆弄,我想我已经开始工作了:
%# open Word
Word = actxserver('Word.Application');
Word.Visible = true;
%# create new document
doc = Word.Documents.Add;
%# set caption style for tables
t = Word.CaptionLabels.Item(2); %# 1:Figure, 2:Table, 3:Equation
t.NumberStyle = 0; %# wdCaptionNumberStyleArabic
t.IncludeChapterNumber = false;
t.ChapterStyleLevel = 1;
t.Separator = 0; %# wdSeparatorHyphen
%# insert table caption for current selection
Word.Selection.InsertCaption('Table', '', '', 0, false) %# wdCaptionPositionAbove
%# save document, then close
doc.SaveAs2( fullfile(pwd,'file.docx') )
doc.Close(false)
%# quit and cleanup
Word.Quit
Word.delete
请参阅MSDN文档以了解如何使用此API。例如,上面使用的InsertCaption函数的参数顺序。
请注意,我必须将IncludeChapterNumber
设置为false,否则Word会在标题文本中打印"Error! No text of specified style in document"
...
最后,为了找出wd*
枚举的整数值,我使用ILDASM工具来反汇编Office Interop程序集(建议this solution)。只需将整个内容转储到文本文件中,然后搜索您要查找的字符串。
答案 1 :(得分:0)
在基础MATLAB工具箱中查看actxserver
的帮助和xlsread.m
的源代码。如果您仍然卡住,请根据您的进度更新您的问题。
修改强>: 您需要检查VBA帮助,但第一部分应该可以通过以下方式实现:
o = hdlWordDoc.CaptionLabels('Table');
o.NumberStyle = <some number corresponding to wdCaptionNumberStyleArabic>;
o.IncludeChapterNumber = true;
o.ChapterStyleLevel = 1;
o.Separator = <some number corresponding to wdSeparatorHyphen>;
根据我的经验,你必须从枚举中获取值,例如来自VBA脚本的wdCaptionNumberStyleArabic和wdSeparatorHyphen,然后对它们进行硬编码。您可以尝试以下方法,但我认为它不起作用:
o.NumberStyle = 'wdCaptionNumberStyleArabic';
o.Separator = 'wdSeparatorHyphen';