使用 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/