图片缩略图

聪明的PowerPoint出口国

version 1.7.0.0 (19.1 KB) by 他在Aronov
出口Matlab数字到PowerPoint。修正格式直接在PowerPoint中,以允许轻松编辑。
4.9
18评级

10下载

更新2011年2月18日

视图版本历史

查看许可证

编辑注意:这个文件被选为MATLAB中心本周精选

此程序将MATLAB图导出到PowerPoint并将其转换为一组PowerPoint对象。然后,它直接在PowtPoint中编辑各种对象属性,使得可以在不破坏外观,对准等的情况下容易地修改该图。

程序功能:
(见截图摘要)

- 使用Matlab工具栏上的添加按钮或使用命令行代码导出。

-对所有轴标签、勾号标签和文本框应用正确的对齐和锚定,这样在PowerPoint中图形大小调整或字体更改后,它们不会发生偏移。

—用于标识对数轴和科学轴,并在PowerPoint中应用上标。这防止了将每个上标标签分割为两个文本框的情况,这种情况在向PowerPoint进行标准复制粘贴时发生。

-将每个文本框的文本框转换为一个单独的格式正确的PowerPoint文本框。这防止了将TEX盒分割为多个对象。将所有特殊的TEX字符转换为Unicode。

-删除不必要的背景颜色/轮廓对象,结果是标准的复制粘贴,而不是直接编辑这些PowerPoint功能。

-将每个轨迹组合成一个单独的PowerPoint组对象,便于编辑。

-允许导出对象密集的部分作为位图,而其他部分在可编辑的元文件格式。

—允许指定元文件和位图图形部分的图像分辨率。

- 允许指定导出图形的PowerPoint幻灯片。

—允许指定导出图形的大小和位置。

-允许分组对象的速度和批量编辑在PowerPoint。

引用作为

他在Aronov(2021)。聪明的PowerPoint出口国(//www.tatmou.com/matlabcentral/fileexchange/30124-smart-powerpoint-exporter), MATLAB中央文件交换。检索

意见及评分(40

Nischal Sehrawat.

谁能给我一个使用这个功能的例子吗?我很难弄明白

Laurent Couturier.

嗨Jens,

我现在使用你的函数toPPT(numfig,'format','vec')而不是pptfigure(numfig)获得相同的结果!
谢谢很多Jens,

劳伦

延斯•里希特

你好劳伦特,

它对我起作用,当我做了一个“尝试捕捉”,什么是实际上忽略这行。但是我必须提交,我修改了很多代码。如果你感兴趣,你可以检查我的toPPT,它使用了“智能PowerPoint出口商”功能和其他功能,因为我认为智能PowerPoint出口商真的不再维护:-(。例如,您可以从toPPT中提取您感兴趣的部分。

最好的
j

Laurent Couturier.

你好,我在使用Matlab14b和Power Point 2013时也遇到了问题。我根据Cris的建议修改了函数,但是出现了另一个错误:
错误使用Interface.9149347A_5A91_11CF_8700_00AA0060263B /组
错误:对象返回错误代码:0x800a01a8

pptfigure错误(第911行)
集(图片,“左”,0,“顶级”,0,…
有人有建议吗?先感谢您,
劳伦

浣熊

你好,Jian Sun,我有一个类似的错误(虽然我不使用Mac,但我认为这无关紧要)。我在第560行得到了那个错误,它发出了一个类似的调用:num2str(H)。

H是包含许多属性的图的句柄。在Matlab 2014b中,图形句柄不再是double类型的,它不是一个对象。根据Mathworks文档(//www.tatmou.com/help/matlab/graphics_transition/graphics-handles-are-now-objects-not-doubles.html.),您可以不再“[转换]处理到字符串或在字符串操作中使用句柄”。

也许num2str(H)的每个实例都应该被num2str(H. number)替换。这包括第67行和第560行(还有其他行)。

在做了这个改变之后,我发现了新的错误:

使用Interface.9149347A_5A91_11CF_8700_00AA0060263B / GET时出错
错误:对象返回错误代码:0x800a01a8

PPTFIGURE中的错误(第564行)
metaWidth =(图片,“宽度”);

当我用get(pic)查看'pic'对象时,大多数属性报告错误。

剑孙

嗨,我用起来有困难。我在macbook pro的R2014b中使用它。导出按钮没有为我生成。下面是我得到的错误信息,有什么想法吗?
undefined函数'abs'用于类型'matlab.ui.figure'的输入参数。

num2str错误(第66行)
xmax =双(max (abs (widthCopy (:))));

pptfigure错误(第67行)
uipushtool(工具栏、CData的get_ppt_image……

短剑

我刚刚发现Eric Sampson在“saveppt2”的评论中发布的这个不错的解决方案,可以完美地与“pptfigure”和PowerPoint 2013一起工作。

以下是他最初的评论:

----

大家好,对于那些在使用PowerPoint 2013时遇到错误的人,为了纠正这个问题,你可以替换以下行:
pic1 = Invoke(new_slide.shapes,'paste');

用下面两行:

picshaperange =调用(new_slide.shapes,'paste');
pic1 =调用(picShapeRange“项目”1);

这个修复在使用旧版本的PowerPoint时仍然有效。

----

我所做的一切都是修改如下,一切工作都和之前一样:

picshaperange =调用(new_slide.shapes,'paste');%或:picshaperange =调用(slide.shapes,'victicpecial',3);(按要求)
pic = Invoke(Picshaperange,'Item',1);

最好的问候,
短剑

月桂树

没有……我只有打开2007年的Powerpoint,然后把它转换成2013年的Powerpoint,才能做到这一点。这不是很优雅,但确实有用。问题似乎是对actxserver的调用被设计用于较老版本的ppt。

实验后Churi

劳蕾尔,我好像也看到了同样的失败。你能解决这个问题吗?

使用Interface.9149347A_5A91_11CF_8700_00AA0060263B / GET时出错
错误:对象返回错误代码:0x800a01a8

PPTFIGURE中的错误(第564行)
metaWidth =(图片,“宽度”);

月桂树

我和迭戈有同样的问题。
我在Windows 7 OS上运行Matlab R2014A,尝试与PowerPoint 2013进行交互。
我得到以下错误:

使用Interface时出错.microsoft_powerpoint_12.0_Object_Library.shaperange / get
错误:对象返回错误代码:0x800a01a8

PPTFIGURE中的错误(第564行)
metaWidth =(图片,“宽度”);

评估UIPUSHTOOL CLICKEDCALLBACK时出错

有人知道最新的PPT版本有什么变化吗?我很想用这个函数。

朱利安Hapke

我认为这个功能('com_safearraysingledledim',1)
应该重置为0时,功能完成,所以matlabs的默认行为恢复

卡尔Witthoft

也许应该包含一个警告,即图将被转储到当前打开的PPT文档中:-)。喜欢从命令行执行(而不是通过按钮)的选项,因此允许多个图的自动脚本编写。
也非常方便,但隐藏在html文档页:能力放置新的PPT页在当前位置(一个打开的)PPT文档,而不是附加到现有的幻灯片集。

延斯•里希特

嘿,

我最近发现了这个不错的脚本,但不幸的是,它在兼容性方面还不是完全最新的,而且有时确实很难使用。
伟大的工作。我也面临着不同的问题。大多数问题都可以在这个线程的帮助下解决,信不信由你,使用该死的手册:-D

我也在能够“了解和工作”的地方,其中一些问题:

???调用错误,分派异常:
资料来源:Microsoft PowerPoint 2010
描述:ShapeRange。Item:超出范围的整数。2不在Index的1到1的有效范围内。
帮助文件:
帮助上下文ID:0

这似乎最可能发生在你的图中的点数量很高的时候。当我使用pcolor处理大量数据点时,就会发生这种情况。
一个变通的方法是简单地通过(让我们假设它是图1)将这个图导出为图像:

pptfigure(图1,200年“BitmapResolution”);

%200表示该分辨率

您还可以使用“BitmapResolution”=>查看手册的其他属性;-)

最好的
j

亚历克斯泰勒

Frederic,这并不令人满意,但是如果你简单地注释掉第961行,这个程序可以在powerpoint的新版本中运行。

弗雷德里克

我用pptfigure来复制数字,效果很好。但在一些星期,它似乎不再工作,我得到以下错误消息:

使用Interface.9149347F_5A91_11CF_8700_00AA0060263B / SET时出错
调用错误,分派异常:错误非spécifiée

pptfigure错误(第961行)
“重量”,集(lineObj获得(对象(obj)、“线宽”));
有谁对如何解决这个问题有意见吗?
先感谢您

作诗者杨

我曾经把图形复制到PowerPoint中,取消分组,编辑对象,再重新分组;很乏味的。这个功能自动完成所有这些!这是太棒了!真管用!谢谢你的伟大工作!

斯科特·奥特森

非常有用!

你好,
我在到处寻找这类应用程序,但找不到一个版本,适用于Mac。这可以使它也适用于Mac吗?
谢谢,- NG

迭戈

你好,

我正在使用matalb 2012b和powerpoint 2013。我试着用这个,但我

“错误使用Interface.9149347A_5A91_11CF_8700_00AA0060263B /
错误:对象返回错误代码:0x800a01a8

PPTFIGURE中的错误(第564行)
metaWidth =(图片,“宽度”);

当评估uipushtool时发生错误

达里克

人文国林

马特Caywood

总的来说,这个功能很好,但非常过度。这是我发现从MATLAB中获取矢量图形的最佳方式,但这不是初学者。

我钦佩作者深入研究Matlab图形的沼泽,这是连Mathworks都不敢触及的。

马特Caywood

如果我的图像宽度大于*精确* 1253像素,pptfigure将不会正确地将其复制到Powerpoint(2010)——它将在幻灯片的左上方留下一个杂乱的“编码”轴。

这个轴是由
line 561: pic = invoke(slide.Shapes,'PasteSpecial',3);

和应该被销毁(但不是完全销毁)第601行:调用(pic,'Delete');

丹尼尔

丹尼尔

我刚拿到这个,简直惊呆了。它使Matlab中的情节在PowerPoint中看起来如此干净。不可或缺的!

克莱尔

它工作得很好,除了它没有保留我的图上“填充”的透明度设置。知道我该怎么加吗?
谢谢!

丹尼尔Helmick

在大多数情况下都很有效。我真的很喜欢这个。

如果在复制过程中关闭了行,也不能正确捕获情节。

joachim

达伦

这是一个很棒的文件。然而,我在尝试用sprintf函数导出文本时遇到了麻烦。它最终省略了文本。想法吗?

本杰明

从2012年2月开始,pptfigure似乎不能正确地将颜色条输出到Power Point。我对代码做了两个更改,使颜色条工作(在第874和1109行):
@@ -874,6 +874,18 @@
如果〜isempty(查找(图例==对象(obj),1))
set(get(对象(Obj),'儿童'),'可见','上');
结尾
+ if strcmp(get(objects(obj),'Tag'), 'TMW_COLORBAR'))
对于颜色条,父轴需要是可见的。
+集(get(对象(obj),“父”),“可见”,“上”);
+%通过清除他们的情况来使颜色禁止暂时看不见
+ %文本,但保持颜色条轴标签在相同的位置。
+ ytick = get(get(对象(obj),'父'),'ytick');
+ cbar_lbl = findobj(objects, 'Type','text',…)
+'父',get(对象(obj),'父'));
+ cbar_lbl_pos = get(cbar_lbl,'Position');
+集(get(对象(obj),“父”),“ytick”,[]);
+集({“位置”},cbar_lbl cbar_lbl_pos);
+结束
set(对象(查找(不可见)),“可见”,“关闭”);%#OK

将轴的位置设置为原始值
@@ -1109,6 +1121,10 @@
如果比较字符串(类型,“文本”)
集(对象(obj),“翻译”,翻译);
结尾
+ if strcmp(get(objects(obj),'Tag'), 'TMW_COLORBAR'))
+%恢复ytick值到彩色杆轴
+集(get(对象(obj),“父”),“ytick”,ytick);
+结束
结尾
结尾

问题是,当“visible”属性设置为“on”时,包含在颜色条轴中的图像不显示。

的家伙

和Hugh的问题类似,如果我已经打开了PowerPoint,它会很好用。如果没有,如果我尝试从命令行或图形按钮使用它,我得到以下错误:

???调用错误,分派异常:
来源:Microsoft Office PowerPoint 2007
描述:application.ActiveWindow:无效请求。目前没有
活动文档窗口。
帮助文件:
帮助上下文ID:0

==> pptfigure在343时出错
风= (ppt,“ActiveWindow”);

???评估UIPUSHTOOL CLICKEDCALLBACK时出错

嗨,我输入了"pptfigure",什么都没发生。我做错了什么?

蒂姆

优秀的程序!

我最初在PowerPoint幻灯片中有传奇的问题。出于某种原因,如果符号是圆圈('O')或Square('s'),则被删除。如果我将符号更改为以外的圆圈或正方形,那似乎没关系。作为临时修复,我评论了939号线,所有符号都制作。

938如果isempty(deblank(txt))返回939%的调用(pic.item(c),'删除');

如果您有更好的修复,请告诉我。

谢谢!

桑德Aerts

我和鲍里斯有同样的问题。当我运行以下命令:
>>清除全部,关闭所有
> >(~) =山峰;视图(2);
>> pptfigure(1);
???调用错误,分派异常:
资料来源:Microsoft PowerPoint 2010
描述:ShapeRange。Item:超出范围的整数。2不在Index的1到1的有效范围内。
帮助文件:
帮助上下文ID:0

错误在==> pptfigure在926
调用(pic.Item(2),“删除”);

基本上是同样的错误,但是在2010年的幻灯片上。它确实创建了一个幻灯片,但创建的对象似乎是完全空白的。
如果它工作正常,我肯定会使用这个工具。

道格·哈里曼

鲍里斯

我尝试在Windows XP SP3上使用PowerPoint 2010 SP1,使用Matlab 2010a。这个按钮出现了,当你点击它时,它打开了PowerPoint,但随后只生成了一张空白幻灯片……没有给出错误,但它似乎不工作(不幸的是)……我试图导出一个混合区域和线图。

尤里K

我对这个函数很感兴趣。但是它在PowerPoint 2007中有用吗?不适合我。MATLAB 2011 a。
Pptfigure不打开图形,并且没有返回错误。如果我自己创造的图形,那么:
> > pptfigure (gcf)
???调用错误,分派异常:
来源:Microsoft Office PowerPoint 2007
描述:ShapeRange。Item:超出范围的整数。2不在Index的1到1的有效范围内。

费德里科•Miorelli

伟大的主意,令人难以置信的易于使用!
我有一些类型的绘图问题:例如,如果我用pcolor绘制任何矩阵,我会在导出时得到错误。

谢谢!

艾蒂安

嗨,他在

我的轴标题标签已重复多次。我检查了原件,但只有一个实例。你以前见过这个问题吗?

克里斯蒂娜

这个出口商太棒了。你不需要重新生成matlab图形,使它们易读,重新缩放子图,改变函数之间的距离,改变颜色,字体大小,添加或删除对坐标轴的标记,删除你不想在幻灯片上的情节的部分等。它把大部分痛苦的工作与matlab图形:)谢谢:):)

MATLAB版本兼容性
创建R2010a
与任何版本兼容
平台兼容性
窗户 macOS Linux.
确认

灵感来自:保存

启发:Colormouse

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!