使用 JSL 脚本将图形导出到 PowerPoint大家好,
试着在这里集思广益,看看什么是实现这个想法的最佳途径。
这个想法是能够从脚本中获取所有图表/图并将它们推送到 powerpoint 中。 我希望对其进行自定义,以便能够将图形拖到幻灯片上并将它们与文本一起放置在 powerpoint 之外,然后将其推送到 powerpoint。
我目前已经粗略地完成了第一部分。 使用应用程序生成器,我能够创建一个应用程序,它提示用户输入脚本,运行脚本,抓取从脚本中打开的所有窗口,将它们放入一个列表中,用户可以在其中选择要显示的图形到 PPT。
之后,我有一个 VBscript,一旦用户选择模板,就会调用该脚本。 任何保存到 HTML 的图形都会创建一个包含该图形内容的 GFX 文件夹,VB 脚本会抓取该 GFX 文件夹的内容并将其放入 powerpoint 中。
它非常粗糙,每张幻灯片一张图表,用户必须在 powerpoint 中添加文本。
我的问题是你是否认为这是正确的方向。 昨天我与 JMP 的一些人交谈,他们提到另一个值得研究的途径是利用 R。 我对 R 没有任何经验,但如果它是一个更好/更有效的路径,那么我会研究它。
为了扩展我当前的工作,也许我可以为用户创建一个选项来选择放置图形和文本的幻灯片的哪一部分。 但我不确定如何将其传递给 VB 脚本。
预先感谢您的任何帮助或想法。 任何事情都受到欢迎。
-马特
回复:开动脑筋...导出到 PowerPoint 的脚本<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />好的,我为自己做的,给你
这些是单个模块,将它们放在更广泛的循环中或根据您的喜好使用(请原谅我的英语......)
*从 jmp 导出 - 图像
像往常一样生成图表,创建对它的引用(例如
graph_reference = 数据表 <
然后照常保存图像
graph_reference <<保存图片("\output\"name_image.png", png);
*从 jmp 导出 - 文本
只是为了测试在变量中放入一些内容,真正的用途是让它们包含您需要导出的信息
string_containing_title1 = "第一行";
string_containing_title2 = "\!N第二行";
保存文本文件("titles.txt",string_container_title1, mode ("replace"));
保存文本文件("titles.txt",string_container_title2, mode ("append"));
现在你有了图像和文本,你可以直接在 powerpoint 中导入它们(注意 .pptm 格式、宏安全性等等......)
这是导入图像并放置它的 VBA 代码
' 定义变量幻灯片
将 oSlide 调暗为幻灯片
将数字变暗为整数
形状变暗
' 定义变量图像
Dim ImgFolder As String: ImgFolder = "C:\Users\john_ronald_reuel\Documents\toy_box\pet01\test_im\"
Dim piazza1 作为字符串
将 file1 变暗为字符串
' 值设置用于测试目的,实际使用时放置一个 cicle 来定义它们,这里我们将 5831_pie.jpg 放在幻灯片 02 中
文件1 =“5831_pie.jpg”
数字 = 2
' 为图像文件创建完整路径
piazza1 = (ImgFolder & 文件1)
' 将幻灯片 02 设置为活动状态
设置 oSlide = ActiveWindow.Presentation.Slides(numero)
' 放置图像,无链接,保存,位于左上角坐标 10,10 处,不重新缩放
设置 oPicture = oSlide.Shapes.AddPicture(piazza1, msoFalse, msoTrue, 10, 10)
' 编辑:使用裁剪和其他功能来裁剪、放置或重新缩放。
使用 ActivePresentation.PageSetup
oPicture.PictureFormat.CropBottom = 30
oPicture.Height = 450
o图片.左 = 450
结束于
对此的注释:
*您可以在此代码中使用相对路径 --> ImgFolder = ActivePresentation.Path & "\output\"
*图像编辑是连续的,不喜欢负数:如果你想裁剪40并在10结束,不能从-30开始裁剪并停止,但必须从10开始,裁剪然后使用左(或顶部) )
*piazza 和 numero 用于使代码不硬连线,但这是单个模块。你最好使用 cicle 和数组来存储图像名称和幻灯片编号
这是加载从 jmp 导出的信息并将它们放入数组中的代码,每一行都指向数组的一个元素
'cicle 的定义变量
Dim ilvelli 作为整数
将 i 调暗为整数
将温度调暗为字符串
'文本文件的定义变量
将索引文件夹变暗为字符串
将 ImgFolder 变暗为字符串
将 sFileName 变暗为字符串
将 iFileNum 变暗为整数
'定义文件夹
索引文件夹 =“C:\Users\john_ronald_reuel\Documents\toy_box\pet01\config\”
'定义动态数组,将包含文本文件的行
Dim sparam() 作为字符串
'重新调整大尺寸
ReDim sparam(75) 作为字符串
'定义文件名
sFileName = 索引文件夹 & "levels_DD.txt"
'加载文件
iFileNum = FreeFile()
打开 sFileName 作为 iFileNum 输入
'cicle do EOF:加载第 i-eth 行,将其放入 temp 中,然后将其分配给数组的第 i-eth 元素,然后更新整数 ilivell
我 = 1
当不是 EOF(iFileNum) 时执行
行输入 #iFileNum, temp
sparam(i) = CStr(临时)
伊里维利=我
我=我+1
环形
'将数组重新调整为正确的行数,而不删除它
ReDim 保留 sparam(ilivelli)
'关闭原文件
关闭 iFileNum
这对我有用,我希望它有帮助!
回复:开动脑筋...导出到 PowerPoint 的脚本仅供阅读的人参考:predictum 加载项将在 powerpoint 2007 中崩溃,尽管它创建了该文件。
另外,jsl 脚本似乎是加密的,调用单独的 exe 来创建 powerpoint。
换句话说,这条路是封闭的(至少对我来说),我会走VBA脚本的路
谢谢大家
回复:开动脑筋...导出到 PowerPoint 的脚本很确定有一种方法可以做到这一点,而且它应该比写入文本文件更容易。 VBA 与 JMP 有很多关联,如果您的计算机上安装了 JMP,请转至 VBA 编辑器 > 工具 > 参考...,您应该会看到一长串可供选择的应用程序作为参考。 找到“JMP”并单击该框,现在您就有了一个可以向 JMP 发出的内置命令库。 您基本上可以通过这种方式从 VBA 编写 JMP 脚本。
回复:开动脑筋...导出到 PowerPoint 的脚本感谢您提供所有信息 m477。 我希望将这个自我包含在 JMP 中,只需创建一个插件,我就可以将其安装在任何带有 JMP 的计算机上并使其能够运行。 这并不完全是一成不变的,所以如果这个选项完全没有根据,我可以使用 VBA。
我在 JMP 中内置的当前插件会抓取所有打开的绘图,并将选定的绘图添加到文件夹中。 所以我有一个文件夹,其中包含我想要放入 PPT 中的所有绘图。 我正在寻找的下一步是一种定制形式。 在 jmp 添加中,我想提示用户幻灯片属性,包括每张幻灯片的图形数量、幻灯片标题、附加文本和幻灯片/文本的位置。
我当前的想法是在 JMP 中提示所有这些,获取所有幻灯片属性,然后将它们传递到 VBA 宏中,以便它可以执行特定的幻灯片属性。
是否可以将参数从 JMP 传递到宏? 也许将幻灯片参数保存在某种文本文件中
回复:开动脑筋...导出到 PowerPoint 的脚本编辑:您还需要编写子例程 AddSlides
回复:开动脑筋...导出到 PowerPoint 的脚本您是否有充分的理由不想从 PowerPoint 执行?
我的建议是编写您的 JMP 应用程序,让它执行分析并生成您想要的图形,并将它们另存为图像,完全独立于您尝试创建的演示文稿。 然后,在 PowerPoint 中编写一个宏,该宏首先调用要运行的 JMP 脚本,然后从指定文件夹中获取它创建的图像。
我这样说是因为 PowerPoint 中的格式设置在 VBA 中是轻而易举的事(几乎是 VBA 中唯一容易的事情),因为它有很多内置方法和很多如何使用它们的在线示例。
从 Powerpoint 调用 JMP 的子例程如下所示:
公共子运行JSL()
设置 MyJMP = CreateObject("JMP.Application")
MyJMP.Visible = True
MyJMP.RunJSLFile ("C:\
结束子
然后编写另一个调用 RunJSL 的 VBA 子例程,然后在指定的文件夹中查找,为该文件夹中的每个图像添加一张幻灯片,您可以使用它执行任何您想要的操作,例如:
公共子 MakePics()
将 oSlide 调暗为幻灯片
形状变暗
使 oTitle 变暗为形状
Dim ImgFldr As String: ImgFldr = "$Documents\Plot Images"
将当前文件调暗为字符串
我 = 1
调用 RunJSL
当前文件 = Dir(ImgFldr & "\")
当 CurrentFile <> "" 时执行
调用 AddSlides(当前文件)
//格式化新幻灯片,在其上添加新图片,将其居中,缩放,添加标题,等等
ActiveWindow.View.GotoSlide i
当前文件 = 目录()
我=我+1
环形
结束子
编辑:您还需要编写子例程 AddSlides
回复:开动脑筋...导出到 PowerPoint 的脚本如果您使用 VB 脚本,我假设您已经了解了 JMP 中的 OLE 自动化支持。我还没有尝试过,但您可能需要考虑使用 XML 作为接口机制 - 请查看打开 XML SDK。
戴夫
回复:开动脑筋...导出到 PowerPoint 的脚本是的,我已经研究过他们的解决方案,但我基本上已经完成了他们所做的事情。 现在我希望将其扩展到可以在幻灯片上放置图形/文本而无需打开 powerpoint 的位置。
我也在寻找其他可能想到的其他路线或解决方案。
回复:开动脑筋...导出到 PowerPoint 的脚本Predictum 有一个免费软件包,可以将 JMP 输出导出到 Powerpoint。http://predictum.com/