图片缩略图

WriteToWordFromMatlab

version 1.3.0.0 (15 KB) by Andreas Karlsson
自动创建MS Word文档从Matlab与数字,表格,标题和文本。
4.8
62年评级

66下载

更新2016年10月24日

视图版本历史

查看许可协议

这个m-file是对'save2word'的修改。这是一个如何从MATLAB自动创建MS Word文档的例子与数字,表格,标题和文本。
添加具有不同样式的文本和添加图形的不同基本功能被分解为子功能,可以以简单的方式使用。

引用作为

Andreas Karlsson(2021)。WriteToWordFromMatlab(//www.tatmou.com/matlabcentral/fileexchange/9112-writetowordfrommatlab), MATLAB中央文件交换。检索

意见及评分(82

lydie Nsangou


我是否必须复制主脚本或我只需要适应我的代码的功能?
谢谢

巴勃罗·德尔珈朵

你好,

你们中的一些人会得到错误。

来源:Microsoft Word
描述:这个元素是一个很好的元素。
帮助文件:wdmain11.chm
帮助上下文ID: 62e2

原因很简单,因为样式表(德语为Formatvorlagen)被设置为另一种语言。在我的例子中,这是德语,所以style_p='Title'实际上应该是style_p='Titel'(德语),'Überschrift 1'等。

Andreas Karlsson

查看StartWord函数中的代码。

如果~存在(word_file_p,“文件”);
%创建新文档:
word_handle =调用(actx_word.Documents '添加');
其他的
%打开现有文档:
word_handle =调用(actx_word.Documents,“开放”,word_file_p);
结束

然后再看看CloseWord函数……
这个脚本的目的是为您提供自动化的工具。玩和学习:-)

v k

如果我把它放在for循环,它每次打开一个新的word文档,我必须每次手动保存它。它破坏了自动化的整个目的。我如何修改代码,以便每个for循环索引中的所有文本继续并被追加到已最初打开的同一(一个)字文档中?谢谢。

杰西卡·托雷斯

vj

要在word中插入vbtab (Dennis Arreborg在2015 Okt中提出的问题):
在Matlab中使用tab-Character,它是char(9)

actx_word.Selection.TypeText (char (9))

这将在Word中创建一个真正的TAB

garima

我有一张20*4的excel表格。我想将数据写入一个(20*2)格式的表,如(1,1)和(1,2)的数据将出现在表(1,1)中,然后(1,3)和(1,4)出现在表(1,2)中。
类似地,(2,1)和(2,2)的数据将出现在表(2,1)中,然后(2,3)和(2,4)的数据将出现在表(2,2)中,直到(20,1)和(20,2)的数据将出现在表(20,1)中,然后(20,3)和(20,4)的数据。

fhz

我改变了一些命令,可能也会帮助其他人。
它并没有达到预期的整洁,但是这个修改是理解选项的第一步
% % % % %表:
表= actx_word_p.ActiveDocument.Tables.Add (actx_word_p.Selection.Range nr_rows_p nr_cols_p, 1, 1);
%……
%在double后用于写入内容
%试图将表格居中并合并给定的单元格
table.Rows.Alignment =“wdAlignRowCenter”;


% Merge—仍然需要一般化
%在第一行合并列(5,6)和列(3,4)。
如果你先做(3,4),(5,6)会变成(4,5),给出正确的数字会更复杂
以为= table.Rows.Item (1);
trow.Cells.Item (5) .Merge (trow.Cells.Item (6))
trow.Cells.Item (3) .Merge (trow.Cells.Item (4))

% % % % %

%%%%%格式化一些文本
% At the moment: format_p = {'Bold', 'Italic'}
函数WordText (actx_word_p text_p、style_p enters_p, format_p, color_p)

如果nargin == 5
如果包含(“大胆”,format_p)
actx_word_p.Selection.Font。大胆= 1;
结束
如果包含(“斜体”,format_p)
actx_word_p.Selection.Font。斜体= 1;
结束
结束
% % % % %
对于说葡萄牙语的人,将:Style='Heading 1'替换为Style='Título 1'。
% % % % %

fhz

惊人的! !
我已经学习了很长时间如何从Matlab编写LaTeX文件。这是一个很棒的做报告的工具。
上周有人来问我关于LaTeX的报告,但是报告应该是Word中的表格。
LaTeX中的自动化非常直接,执行起来很简单,很自然地就可以解耦文件的任何部分。
这一点并不适用于Word。感谢您的功能,我可以开始了解如何在Word中制作相同的把戏。

实际上,我把您的一些函数(我一开始需要的那些)做成了独立的函数,以便我可以随意重用它们。
下一步是学习如何创建集中的表,而没有板线。

再一次,非常感谢。拥有这些工具是令人难以置信的。

勒•伯格伦

伟大的工作!D我有一个问题。如果你想用瑞典语写一篇报告。你怎样把瑞典字母åäö变成单词?

乔纳斯Rosegren

经典的安德烈亚斯!现在我又开始使用它了。

Gerrit利特克

Zhaoxiang风扇

黄宗泽西安

SUMANJEET考尔

非常感谢你,安德里亚斯!

我喜欢您编写示例m-file的方式。

艾薇弗瑞森

莱安德罗Mascher

感谢您提供的这些信息,不过,我需要在文档(.docx)中插入一个等式。你知道我是怎么做的吗?我在数学课上没有成功。

托马斯Pallierer

你好所有的,

我发现了下面这个问题的问题。如果已安装德国办公室,需要更换:

样式与风格= =“正常”的“标准”

Style=' title 1' with Style='Überschrift 1'

感谢伟大的脚本,非常有用:-)

托马斯Pallierer

你好所有的,

看起来不错,但我有个问题。我使用的是Matlab 2017b和Office 2010

我有一个问题与以下错误:

调用错误,分派异常:
来源:Microsoft Word
描述:这个元素是一个很好的元素。
帮助文件:wdmain11.chm
帮助上下文ID: 62e2

在WriteToWordFromMatlab>WordText错误(第202行)
actx_word_p.Selection。风格= style_p;

WriteToWordFromMatlab错误(第33行)
% 2在text后面输入

有人知道怎么解决吗?
谢谢提前

milad eshkevari

谢谢你的出色工作

盖洛德德拉图尔

非常感谢,太棒了。

当我想在关闭第一个文档后创建另一个文档时,出现了一个错误:

错误使用Interface.0002096C_0000_0000_C000_000000000046 /开放
错误:呼叫被呼叫者拒绝。

我必须重新启动matlab才能让它再次工作,有什么想法吗?

谢谢!

侯赛因·阿里

我该如何使用它呢?

达伦Koh

嗨,干得好!代码的第5部分运行有问题吗?还是只是我的问题?请提前让我知道谢谢!

Praveen

你好,
这是一个很棒的工具,从这里学到了很多东西。谢谢你!

我正在尝试阅读Word-2013文档中现有的文本颜色,使用下面的语法
Text_Color = actx_word_p.Selection.Font.ColorIndex;

它在大多数情况下正确地读取颜色,但不是全部。它会错误地检测颜色,例如:
1)即使文本是紫色的,它读取为“wdPink”
2)即使文本是橙色的,它读取为“wdRed”

有人能让我如果我错过了什么和如何修复这个问题吗?
非常感谢。

youssouf outgda

大家好,

在法国安装MS Word时,你必须通过“Titre”更改脚本中的所有“header”条目。用Ctrl+F搜索"header",并替换代码中的所有header。

这应该适用于所有版本的MS Word;)

youssouf outgda

大家好!

有没有人改变了风格的名字,以适应法语安装的MSWord?

我尝试了改变一些风格,但我仍然在这个问题上。

谢谢

这是一份很棒的工作。非常有用,非常清楚。谢谢你的贡献。

j

你好,

我刚下载了它,试着在安装了Word的Mac OS上运行。也许它不应该在mac上工作,因为我找不到其他人类似的问题:

使用actxserver时出错(第90行)
服务器创建失败了。无效的ProgID“Word.Application”。

在WriteToWordFromMatlab>StartWord错误(第151行)
actx_word = actxserver(“Word.Application”);

刚刚在windows机器上试过,那里它工作到图2,我得到一个
"警告:MATLAB切换到openGL"然后
使用legend>process_inputs(第582行)时出错…

现在将分别进行调查。
谢谢你的代码!

Harry123

你好,
是的,使用了template.docx

我希望这是有帮助的,因为我不再参与这个项目,将无法提供更多的信息:https://jp.mathworks.com/matlabcentral/newsreader/view_thread/348396#953703?s_tid=prof_contriblnk

问候
哈利

vanderjs

你好,

很好的工具和示例代码使它非常容易跟随。有人用。docx输出过文件吗?我尝试了它,它不让我关闭文件,所以我不确定这是否可行,只是好奇。

再次感谢!
杰里米

比尔车

你好,

我使用这段代码来循环编写一个图、图标题和表到一个MS文档文件。当我打开文档,第一个图有MS Word样式为“Normal”。然而,其余的数字有MS Word样式为“fig_title”。当我在代码中一步一步地执行时,下面的代码什么也不做。这可能是问题所在吗?注意,我使用的是最新的Matlab 2017B。如果是,我需要改变什么?谢谢。

actx_word_p.Selection.TypeParagraph;%输入

最好的问候,

比尔车

杰里米•沃克

谢谢你的代码。
当我们使用大表时,我会为每个页面添加一些重复标题的代码。

为r = 1: nr_rows_p
c = 1: nr_cols_p

如果r = = 1
如果c = = 1
actx_word_p.Selection.Rows。HeadingFormat = 1;
结束
结束

结束
结束

xiexiezaijian

成功在世界2016。

朱的立法

花茎甘蓝

这太棒了,有没有一种方法可以打开一个现有的文档,并搜索一个短语是否存在?

Harshitha Pushpagiri

你好,有谁能帮我处理一下M2015b中的错误信息谢谢

未定义函数或变量'TablesOfContents'。

在WriteToWordFromMatlab>WordCreateTOC错误(第185行)
actx_word_p.ActiveDocument.TablesOfContents.Add (actx_word_p.Selection.Range 1…

在WriteToWordFromMatlab错误(第68行)
WordCreateTOC (ActXWord, 1, 3);

运行错误(第96行)
evalin(“来电”,[脚本';']);

Andreas Karlsson

你好,
您是否更改了样式的名称以适应您(法语?)的MSWord安装?
在代码中(以及定义Style=的所有其他地方:
风格=“标题1”;%注意!如果你没有使用英文版本的MSWord,你会得到
这里出现错误。瑞典的装置使用“Rubrik 1”。

托马斯。

你好,有人能帮我处理一下M2012b中的错误信息吗?谢谢

K > > actx_word_p.Selection。风格= style_p;
调用错误,分派异常:
来源:Microsoft Word
描述:élément不叫spécifié不存在。
帮助文件:wdmain11.chm
帮助上下文ID: 62e2

Leo-Jay黑

Sabarinathan Vadivelu

Jens Koopmann

亲爱的安德烈亚斯,

非常感谢你与社区的其他人分享你的Matlab代码。

我已经用过你的函数很多次了,它们很棒。

我想知道你是否可以粘贴和整个表格的数据,而不是写它的单元格。在VB中的moveright命令是非常慢的,我想使用

选择。PasteExcelTable False, True, True
Selection.Tables(1)。Style = "Grid Table 5 Dark - Accent 1"

在MS Word中的PasteExcel表命令。

VB宏在MS Word中工作,但我努力得到matlab来执行上述命令。

你方任何建议都将不胜感激。

我已经写了代码,粘贴数据表到MS Excel,我可以复制表到剪贴板。

我只是在纠结最后一点。

基米-雷克南

延斯

纳塔莉亚Toriello

德文标题改为Überschrift和正常标准

费德里科•Arismendi

嗨,请我需要运行脚本的西班牙语版本。我如何修改代码来运行它?
谢谢。

艾哈迈德阿尼尔DINDAR

我已经多次使用这个文件来编写简单的报告。我很欣赏你的工作。

丹尼斯Arreborg

有没有人有办法在文本中包括一个标签。

记录宏观收益
选择。TypeText Text:=vbTab

但是我如何得到vbTab命令
actx_word_p.Selection.TypeText

阿兰•格雷罗州

Rashmil Dahanayake

Rashmil Dahanayake

Vishesh Vatsal

Bogdana

非常好的结构和注释良好的代码。

谁能帮帮我?我在合并细胞时遇到了问题。

词帮助说:
myrow.Cells.Merge

我想合并表中的第一行,但是:
actx_word_p.Selection.Rows (1) .Cells.Merge
并不工作

它返回错误:
类没有适当的方法、属性或字段单元格
Interface.0002094C_0000_0000_C000_000000000046。

任何想法?谢谢

埃迪

我刚把我的电脑升级到word 2010。我不得不改变wdColorAutomatic为wdAudo等,并使用ColorIndex代替color。这是我找到新常数的链接
http://msdn.microsoft.com/en-us/library/office/aa193509 (v = office.10) . aspx

埃迪

非常适合Matlab 2011b和Word 2007
很多谢谢!

格雷戈里

还是工作!微小的变化是需要的

在WordText:(更改为ColorIndex而不是Color)
%设置回默认颜色

actx_word_p.Selection.Font.ColorIndex = color_p;

在WordCreateTOC中:(在末尾添加一个0)actx_word_p.ActiveDocument.TablesOfContents.Add(actx_word_p. select . range,1,upper_heading_p,lower_heading_p,0);

另外,在开头加上这句话,更多的是为了提醒自己:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%查看完整的命令列表:

% 1)打开Word,选择“帮助”选项
% 2)点击“Microsoft Office Help”,等待窗口弹出
% 3)点击“搜索”旁边的箭头可以拉下一个菜单
% 4)在底部,点击“开发人员参考”
% 5)“词对象模型参考”包含所有可用的对象
%,以及“Enumerations”(在底部,只有一个不是
%(按字母顺序)告诉您可用的wd常量。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Rogier

为了在Word2010中使用,我在函数WordText中删除/注释了以下规则:

%设置回默认颜色

效果很好,节省了很多时间。

Rogier

贝恩德•

非常好的代码结构,易于理解和使用。然而,标题和文本样式的硬编码格式样式使多文化办公环境的自动文档生成变得困难;)
...然而,我不能为此责怪这段代码的作者!

Andreas Karlsson

亚当,试试这个。
ActXWord.Selection.InsertBreak (3);

如果您查看脚本TestDoc.doc中创建的选择方法列表,就可以找到它

下面是指向wdBreak枚举的链接
http://msdn.microsoft.com/en-us/library/office/ff195905.aspx

亚当

这真的很好,但我遇到了一个问题,插入一个分段到文字。

我已经记录了一个宏,它使用VB命令:
选择。InsertBreak类型:= wdSectionBreakContinuous

然而,我的Matlab版本:
集(actx_word_p.Selection.InsertBreak,“类型”,“wdSectionBreakContinuous”)

"调用"InsertBreak"期间没有分配一个或多个输出参数。"

你能看出我明显遗漏了什么吗?

格雷格导演今村昌平

托德Brintlinger

抱歉有这么多作品。
Actxserver对象在创建不存在的文件时遇到了麻烦,因为MAPI32.dll有问题/损坏,这是从Outlook调用的,而不是Word。如果文件已经存在(例如TestDoc.doc),它工作没有问题。
我没有尝试修复MAPI32.dll,但这可能解决问题。

托德Brintlinger

这对10号办公室不起作用
这是我收到的错误
???调用错误,分派异常:
来源:Microsoft Word
描述:? ?????????????? ?。
帮助文件:C:\Program Files\Microsoft Office\Office10\1037\wdmain10.chm
帮助上下文ID: 62e2

Error in ==> WriteToWordFromMatlab>WordText at 198
actx_word_p.Selection。风格= style_p;

错误在==> WriteToWordFromMatlab在29
% 2在text后面输入

桑托什

Andreas Karlsson

再来看看这些年发生了什么。谢谢所有的好评论!
对于Dirk Z先生,我可以说你应该打开文件并阅读评论。这将给你做搜索/替换的提示-很容易。阅读Dimitri Gabris在2006年4月11日的评论…
在做了多年的Matlab/ simulink程序员之后,我现在是一金宝app名用其他语言编程的顾问。缺少Matlab的力量。
如果你需要一些Matlab/Simulink编码的帮助,我很乐意帮助金宝app…

benharper1977

非常感谢Andreas,你的脚本为我节省了大量的复制粘贴时间……你是我的英雄。

卡雷尔Macek

非常有用。

尤Ben-Dov

功能强大,易于跟踪,谢谢分享!

德克Z

真是个好剧本。
问题是,以wdGoToBookmark为目标的Goto函数不能工作。
谁能帮忙吗?

B M

只适用于英语办公设备…
所以你需要进行大量的硬编码。在我的电脑上,我有一个荷兰语单词,我的老板有一个英语单词。不容易

托拜厄斯C

也许是Matlab中心最有用的脚本。好的代码和好的注释。

Thorbjorn克努森

只!谢谢

T

雷蒙本书

伟大的代码! !非常感谢

c r

你的代码让我花了很多时间。谢谢!。

E B

约瑟夫nonereally

这是一段很好的示例代码。谢谢安德烈亚斯。

Jiabei元

如果有一个评级超过6,我永远不会评级这个代码与5!!

阿克塞尔·基弗

我完全同意之前的评级。Andreas的工作很出色。这节省了很多时间。

迪米特里Garbi

这正是我想要的。代码允许自动生成通用报告。谢谢你!

注意:为了没有错误,必须调整样式。英语中的“标题1”对应于瑞典语中的“Rubrik 1”(如评论)和法语中的“Titre 1”。

文特尔西奥

这是优秀的。谢谢

E TK

非常好,易于使用和直观的界面。它完全符合你的期望。谢谢发帖!

MATLAB版本兼容性
创建R13SP1
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!