JSL スクリプトを使用してグラフを PowerPoint にエクスポートするやあ、皆さん。
ここで知恵を絞って、このアイデアにとって最善の道が何かを考えてみましょう。
アイデアは、スクリプトからすべてのグラフ/プロットを取得して、PowerPoint にプッシュできるようにすることです。 これをカスタマイズして、グラフをスライドにドラッグし、テキストとともにPowerPointの外に配置して、PowerPointにプッシュできるようにしたいと考えています。
現在、最初の部分は大まかに完成しています。 アプリケーション ビルダーを使用すると、ユーザーにスクリプトの入力を求め、スクリプトを実行し、スクリプトから開いているすべてのウィンドウを取得し、ユーザーがどのグラフに移動するかを選択できるリストにそれらをスローするアプリを作成することができました。 PPTへ。
その後、ユーザーがテンプレートを選択すると呼び出される VBscript を作成します。 HTML に保存されたグラフは、そのグラフの内容を含む GFX フォルダーを作成し、VB スクリプトはその GFX フォルダーの内容を取得して PowerPoint にスローします。
非常に粗雑で、スライドごとに 1 つのグラフがあり、ユーザーは PowerPoint 内にテキストを追加する必要があります。
私の質問は、それが正しい方向だと思うかどうかです。 昨日、JMP の何人かと話しましたが、検討すべきもう 1 つの方法は R の活用だと言いました。 私は R の経験がありませんが、より良い/より効率的な方法がある場合は、検討してみたいと思います。
現在の作業を拡張するには、PowerPoint のどの部分にグラフをテキストとともに配置するかをユーザーが選択できるようにするオプションを作成することもできるかもしれません。 しかし、それを VB スクリプトに渡す方法がわかりません。
助けやアイデアがあればよろしくお願いします。 何でも大歓迎です。
-マット
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプト<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />オーケー、私は自分のためにやった、ここにいるよ
これらは単一のモジュールです。より広いループに配置するか、好きなように使用してください (英語を許してください...)
*jmpからエクスポート - 画像
いつものようにグラフを生成し、それへの参照を作成します(たとえば、
chart_reference = datatable <
その後、通常どおり画像を保存します
chart_reference <<画像を保存("\output\"name_image.png", png);
*jmpからエクスポート - テキスト
テストのために変数に何かを入れます。実際の使用は、エクスポートする必要がある情報を変数に含めることです。
string_containing_title1 = "最初の行";
string_containing_title2 = "\!N 番目の行";
テキスト ファイルを保存("titles.txt",string_containing_title1, mode ("replace"));
テキスト ファイルを保存("titles.txt",string_containing_title2, mode ("append"));
画像とテキストを用意したので、PowerPoint に直接インポートできます (形式 .pptm、マクロのセキュリティなどに注意してください...)
これは画像をインポートして配置する VBA コードです。
' 定義変数のスライド
スライドとして薄暗くする
整数としてのディム数値
形としての薄暗い画像
' 定義変数の画像
Dim ImgFolder As String: ImgFolder = "C:\Users\john_ronald_reuel\Documents\toy_box\pet01\test_im\"
文字列としての Dim piazza1
dim file1 As String
' 値はテスト目的で設定されています。実際に使用する場合は、それらを定義するための円を作成します。ここでは、スライド 02 に 5831_pie.jpg を配置します。
file1 = "5831_pie.jpg"
数値 = 2
' 画像ファイルのフルパスを作成します
piazza1 = (ImgFolder & file1)
' スライド 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
oPicture.Left = 450
で終わる
これに対するメモ:
*このコードでは相対パスを使用できます --> ImgFolder = ActivePresentation.Path & "\output\"
*画像編集はシーケンシャルであり、負の数値は好きではありません。40 でトリミングして 10 で終了する場合、-30 で開始してトリミングして停止することはできません。ただし、10 で開始してトリミングし、使用後に左 (または上部) で終了する必要があります。 )
*piazza と numero はコードをハードワイヤードにしないために使用されますが、これは単一のモジュールです。画像名とスライド番号を保存するには、cicle と配列を使用した方がよいでしょう。
これは、jmp からエクスポートされた情報をロードして配列に配置するコードです。各行は配列の要素に移動します。
'cicle の定義変数
整数としてのディム・イリヴェリ
Dim i を整数として
文字列としての薄暗い温度
'テキストファイルの定義変数
Dim インデックスフォルダーを文字列として
文字列として ImgFolder を暗くする
文字列としての sFileName を暗くする
iFileNum を整数として調整する
'定義フォルダー
Indexfolder = "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-e 番目の要素に割り当て、整数 ilivelli を更新します
i = 1
EOF(iFileNum)でない間に実行する
行入力 #iFileNum、一時
sparam(i) = CStr(temp)
イリヴェッリ = 私
i = i + 1
ループ
'配列を消去せずに正しい行数に再次元化します
ReDim スパラム保存(ilivelli)
'元のファイルを閉じます
iFileNumを閉じる
これは私にとってはうまくいきました、お役に立てば幸いです!
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプト読んでいる人への情報として、predictum アドインは、ファイルを作成しても、PowerPoint 2007 でクラッシュします。
また、jsl スクリプトは暗号化されているようで、パワーポイントを作成するために別の exe を呼び出します。
言い換えれば、この道は (少なくとも私にとっては) 閉ざされているので、VBA スクリプトの方法で進みます。
ありがとうございます
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプト確かにそれを行う方法はありますし、テキスト ファイルに書き込むよりも簡単なはずです。 VBA は JMP と多くの関連性を持っており、マシンに JMP がインストールされている場合は、[VBA エディター] > [ツール] > [参照...] に移動すると、参照として使用する選択可能なアプリケーションの長いリストが表示されます。 「JMP」を見つけてボックスをクリックすると、JMP に発行できるコマンドの組み込みライブラリが作成されます。 基本的に、この方法で VBA から JMP をスクリプト化できます。
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプトm477さん、情報ありがとうございます。 私は、これを JMP に内蔵しておき、JMP を備えた任意のマシンにインストールして実行できるアドインを作成するだけで済むようにしたいと考えていました。 これは完全に決まっているわけではないので、このオプションが完全に基準から外れている場合は、VBA を使用できます。
JMP で構築した現在のアドインは、開いているプロットをすべて取得し、選択したプロットをフォルダーに追加します。 したがって、PPT に入れたいすべてのプロットが入ったフォルダーがあります。 私が探している次のステップはカスタマイズです。 jmp アドイン内で、スライドごとのグラフの数、スライドのタイトル、追加のテキスト、スライド/テキストの位置などのスライドのプロパティをユーザーに要求したいと考えています。
私の現在のアイデアは、JMP でこれらすべてを要求し、すべてのスライド プロパティを取得して、特定のスライド プロパティを実行できるように VBA マクロに渡すことです。
JMPからマクロにパラメータを渡すことはできますか? スライドパラメータを何らかのテキストファイルに保存するとよいでしょう
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプト編集:サブルーチンAddSlidesも記述する必要があります。
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプトPowerPoint から実行したくない正当な理由はありますか?
私の提案は、作成しようとしているプレゼンテーションとは完全に独立して、JMP アプリケーションを作成し、分析を実行させて必要なグラフを生成し、それらを画像として保存することです。 次に、PowerPoint でマクロを作成します。このマクロは、最初に JMP スクリプトを呼び出して実行し、次に指定されたフォルダーから作成された画像を取得します。
なぜこのように言ったかというと、PowerPoint での書式設定が VBA で簡単にできるからです (VBA で簡単なのはほぼ唯一です)。VBA には多くの組み込みメソッドとその使用方法に関するオンライン例がたくさんあるからです。
Powerpoint から JMP を呼び出すサブルーチンは次のようになります。
パブリック Sub RunJSL()
Set MyJMP = CreateObject("JMP.Application")
MyJMP.Visible = True
MyJMP.RunJSLFile ("C:\<あなたのスクリプト>.jsl")
エンドサブ
次に、RunJSL を呼び出す別の VBA サブルーチンを作成し、指定したフォルダーを検索し、そのフォルダー内のすべての画像にスライドを追加します。これにより、必要な操作を行うことができます。たとえば、次のようになります。
パブリックサブMakePics()
スライドとして薄暗くする
形としての薄暗い画像
形状としての薄暗いタイトル
Dim ImgFldr As String: ImgFldr = "$Documents\Plot Images"
現在のファイルを文字列として薄暗くする
i = 1
RunJSL を呼び出す
現在のファイル = ディレクトリ(ImgFldr & "\")
Do While CurrentFile <> ""
AddSlides(CurrentFile) を呼び出す
// 新しい画像を含む新しいスライドのフォーマット、中央揃え、拡大縮小、タイトルの追加など
ActiveWindow.View.GotoSlide i
現在のファイル = ディレクトリ()
i = i + 1
ループ
エンドサブ
編集:サブルーチンAddSlidesも記述する必要があります。
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプトVB スクリプトを使用している場合は、JMP 内の OLE オートメーション サポートについてはすでに調べていると思います。私はこれを試したことはありませんが、インターフェース機構として XML を使用することを検討してみてください。チェックしてください。 XML SDKを開きます。
デイブ
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプトはい、私は彼らの解決策を検討しましたが、基本的に彼らがやったことはすでに実行しました。 現在、パワーポイントを開かずにスライド上にグラフやテキストを配置できるように拡張しようとしています。
私はまた、他の人が考える可能性のある他のルートや解決策も探していました。
Re: 知恵を絞ってください...PowerPoint にエクスポートするスクリプトPredictum には、JMP 出力を Powerpoint にエクスポートする無料のパッケージがあります。http://predictum.com/