HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0510
ぺろHSPでPowerPointの編集7解決


ぺろ

リンク

2016/5/10(Tue) 18:43:02|NO.75443

HSPでPowerPointを制御したいなと思っておりまして
HSPからPowerPointへ指定した位置に文字を記入したり線を引いたりしたいなと思っております。
Excelのサンプルは色々落ちてましたがPowerPointのサンプルは落ちてなかったので
投稿させていただきました。
宜しくお願いします。



この記事に返信する


inovia

リンク

2016/5/10(Tue) 22:06:55|NO.75447

参考程度にどうぞ。
PowerPoint.Application でググると参考になるのが出てくるかと思います。
https://www.google.co.jp/search?q=PowerPoint.Application&ie=utf-8&oe=utf-8&hl=ja


// // Excel VBA から ほんやくこんにゃく // http://q.hatena.ne.jp/1335856191 // // 参考: https://msdn.microsoft.com/ja-jp/library/office/ff743835.aspx // // C:\test がない場合は作る処理 chdir "C:\\" dirlist dummy, "test", 5 if stat == 0 { dialog "ディレクトリ 'C:\\test\\' を作成しました" mkdir "test" } ///////////////////////////////////////////////////////////////// // strPPTFullPath = "C:\test\output.ppt" strPPTFullPath = "C:\\test\\output.ppt" // Set objPpt = CreateObject("PowerPoint.Application") newcom objPpt, "PowerPoint.Application" // objPpt.Visible = True objPpt("Visible") = 1 // objPpt.Presentations.Add objPre = objPpt("Presentations") objPre->"Add" // Set objFile = objPpt.ActivePresentation objFile = objPpt("ActivePresentation") // Set pslide1 = objFile.Slides.Add(1, 12) // Set pslide2 = objFile.Slides.Add(1, 12) objSlides = objFile("Slides") comres pslide1 objSlides->"Add" 1, 12 comres pslide2 objSlides->"Add" 1, 12 // objPpt.Presentations(1).Slides(2).Shapes.AddTextbox(msoTextOrientationHorizontal _ // , 100, 100, 200, 50).TextFrame.TextRange.Text = Range("A1") msoTextOrientationHorizontal = 1 objPre = objPpt("Presentations", 1) objSlides = objPre("Slides", 2) objShapes = objSlides("Shapes") comres objTextBox objShapes->"AddTextbox" msoTextOrientationHorizontal, 100, 100, 200, 50 objTextFrame = objTextBox("TextFrame") objTextRange = objTextFrame("TextRange") objTextRange("Text") = "あいうえお" ; Range("A1") // objFile.SaveAs strPPTFullPath objFile->"SaveAs" strPPTFullPath // objFile.Close objFile->"Close" // objPpt.Quit objPpt->"Quit" ///////////////////////////////////////////////////////////////// dialog "作成したパワーポイントを開きます" exec strPPTFullPath, 16



inovia

リンク

2016/5/10(Tue) 23:45:33|NO.75450

スライドショーしてみる


// // C# から ほんやくこんにゃく // http://blog3.logosware.com/archives/377 // // 参考: https://msdn.microsoft.com/ja-jp/library/office/ff743835.aspx // // C:\test がない場合は作る処理 chdir "C:\\" dirlist dummy, "test", 5 if stat == 0 { dialog "ディレクトリ 'C:\\test\\' を作成しました" mkdir "test" } ///////////////////////////////////////////////////////////////// // スライドショーを表示するために、10枚スライドのパワポを作成する ///////////////////////////////////////////////////////////////// // スライドが10毎あるパワーポイントファイルを作成する strPPTFullPath = "C:\\test\\output2.ppt" newcom objPpt, "PowerPoint.Application" objPpt("Visible") = 1 objPre = objPpt("Presentations") objPre->"Add" objFile = objPpt("ActivePresentation") // 空のスライドを10枚 objSlides = objFile("Slides") repeat 10 objSlides->"Add" 1, 12 loop msoTextOrientationHorizontal = 1 objPre = objPpt("Presentations", 1) // 各スライドに 文字を挿入する repeat 10, 1 objSlides = objPre("Slides", cnt) objShapes = objSlides("Shapes") comres objTextBox objShapes->"AddTextbox" msoTextOrientationHorizontal, 100, 100, 200, 50 objTextFrame = objTextBox("TextFrame") objTextRange = objTextFrame("TextRange") objTextRange("Text") = str(cnt) + "..." objTextEffect = objTextBox("TextEffect") objTextEffect("FontSize") = 96 loop objFile->"SaveAs" strPPTFullPath ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// // 作成したパワポをスライドショーする(等間隔で自動再生版) ///////////////////////////////////////////////////////////////// // スライドの数を取得する(今回は10ってわかってますけども…) // int[] SlideIdx = new int[ppt.Slides.Count]; objFile = objPpt("ActivePresentation") objSlides = objFile("Slides") SlideNums = objSlides("Count") dialog str(SlideNums) + "枚のスライドがあります" // スライドショーのページの指定 // for ( int i = 0; i < SlideIdx.Length; i++ ) { // SlideIdx[i] = i + 1; // } dim array, SlideNums repeat SlideNums array(cnt) = cnt + 1 loop sarrayconv vArray, array, 0 // Microsoft.Office.Interop.PowerPoint.SlideRange range; // range = ppt.Slides.Range(SlideIdx); // range.SlideShowTransition.AdvanceOnTime = Microsoft.Office.Core.MsoTriState.msoTrue; // range.SlideShowTransition.AdvanceTime = 3; objRange = objSlides("Range", vArray) objSlideShowTransition = objRange("SlideShowTransition") objSlideShowTransition("AdvanceOnTime") = 1 // Microsoft.Office.Core.MsoTriState.msoTrue objSlideShowTransition("AdvanceTime") = 1 // 3秒は長いので1秒にした // [Assistant は最近のバージョンでは存在しないので、除外] // bool assistant_on = app.Assistant.On; // app.Assistant.On = false; // Microsoft.Office.Interop.PowerPoint.SlideShowSettings settings; // settings = ppt.SlideShowSettings; objSlideShowSettings = objFile("SlideShowSettings") // 設定 // settings.StartingSlide = 1; // settings.EndingSlide = SlideIdx[SlideIdx.Length - 1]; objSlideShowSettings("StartingSlide") = 1 objSlideShowSettings("EndingSlide") = SlideNums // スライドショーの開始 // settings.Run(); objSlideShowSettings->"Run" // スライドショーが終わるのを待機する // while ( app.SlideShowWindows.Count >= 1 ) { // System.Threading.Thread.Sleep(100); // } objSlideShowWindows = objPpt("SlideShowWindows") while objSlideShowWindows("Count") >= 1 wait 100 wend // [Assistant は最近のバージョンでは存在しないので、除外] // if ( assistant_on ) { // app.Assistant.On = true; // app.Assistant.Visible = false; // } ///////////////////////////////////////////////////////////////// objFile->"Close" objPpt->"Quit" end



ぺろ

リンク

2016/5/11(Wed) 02:36:49|NO.75453

inoviaさんありがとうございます。
COMオブジェクトの使い方?がいまいち分からなくて
他のサイトも参考にしてみましたが自分では全然理解できなかったです
線は書けたんですが、色や太さの指定や画像の挿入、印刷などもできませんでした。(T_T)



// 下記の二つのサイトを参考にしました // 参考: http://www.excel.studio-kazu.jp/kw/20150921184703.html // 参考: https://msdn.microsoft.com/ja-jp/library/office/ff744611.aspx // C:\test がない場合は作る処理 chdir "C:\\" dirlist dummy, "test", 5 if stat == 0 { dialog "ディレクトリ 'C:\\test\\' を作成しました" mkdir "test" } ///////////////////////////////////////////////////////////////// // strPPTFullPath = "C:\test\output.ppt" strPPTFullPath = "C:\\test\\output.ppt" // Set objPpt = CreateObject("PowerPoint.Application") newcom objPpt, "PowerPoint.Application" // objPpt.Visible = True objPpt("Visible") = 1 // objPpt.Presentations.Add objPre = objPpt("Presentations") objPre->"Add" // Set objFile = objPpt.ActivePresentation objFile = objPpt("ActivePresentation") // Set pslide1 = objFile.Slides.Add(1, 12) // Set pslide2 = objFile.Slides.Add(1, 12) objSlides = objFile("Slides") comres pslide1 objSlides->"Add" 1, 12 comres pslide2 objSlides->"Add" 1, 12 // objPpt.Presentations(1).Slides(2).Shapes.AddTextbox(msoTextOrientationHorizontal _ // , 100, 100, 200, 50).TextFrame.TextRange.Text = Range("A1") msoTextOrientationHorizontal = 1 objPre = objPpt("Presentations", 1) objSlides = objPre("Slides", 2) objShapes = objSlides("Shapes") comres objTextBox objShapes->"AddTextbox" msoTextOrientationHorizontal, 100, 100, 200, 50 objTextFrame = objTextBox("TextFrame") objTextRange = objTextFrame("TextRange") objTextRange("Text") = "あいうえ21132お" comres objTextBox objShapes->"AddTextbox" msoTextOrientationHorizontal, 200, 200, 300, 150 objTextFrame = objTextBox("TextFrame") objTextRange = objTextFrame("TextRange") objTextRange("Text") = "あいうえ21132お" objShapes->"AddLine" 50, 50, 400,50 FillForeColorRGB = RGB("128, 0, 0") ;?色の指定と太さの指定が分かりません?;; objShapes->"AddPicture" ;?画像の指定も調べてみたけど分かりません;;? // objFile.SaveAs strPPTFullPath objFile->"SaveAs" strPPTFullPath // objFile.Close objFile->"Close" // objPpt.Quit objPpt->"Quit" ///////////////////////////////////////////////////////////////// ;dialog "作成したパワーポイントを開きます" exec strPPTFullPath, 16



inovia

リンク

2016/5/11(Wed) 20:59:02|NO.75459

とりあえず、色や太さの指定や画像の挿入のみ


#define ctype RGB(%1,%2,%3) (%1 | %2 << 8 | %3 << 16) #define msoFalse 0 #define msoTrue 1 #define msoFlipHorizontal 0 #define msoFlipVertical 1 // 下記の二つのサイトを参考にしました // 参考: http://www.excel.studio-kazu.jp/kw/20150921184703.html // 参考: https://msdn.microsoft.com/ja-jp/library/office/ff744611.aspx // 画像パス imagePath1 = dir_tv + "jp6girl.bmp" imagePath2 = dir_tv + "king_knight.bmp" imagePath3 = dir_tv + "logop.bmp" // C:\test がない場合は作る処理 chdir "C:\\" dirlist dummy, "test", 5 if stat == 0 { dialog "ディレクトリ 'C:\\test\\' を作成しました" mkdir "test" } ///////////////////////////////////////////////////////////////// // strPPTFullPath = "C:\test\output.ppt" strPPTFullPath = "C:\\test\\output.ppt" // Set objPpt = CreateObject("PowerPoint.Application") newcom objPpt, "PowerPoint.Application" // objPpt.Visible = True objPpt("Visible") = 1 // objPpt.Presentations.Add objPre = objPpt("Presentations") objPre->"Add" // Set objFile = objPpt.ActivePresentation objFile = objPpt("ActivePresentation") // Set pslide1 = objFile.Slides.Add(1, 12) // Set pslide2 = objFile.Slides.Add(1, 12) objSlides = objFile("Slides") comres pslide1 objSlides->"Add" 1, 12 comres pslide2 objSlides->"Add" 1, 12 // objPpt.Presentations(1).Slides(2).Shapes.AddTextbox(msoTextOrientationHorizontal _ // , 100, 100, 200, 50).TextFrame.TextRange.Text = Range("A1") msoTextOrientationHorizontal = 1 objPre = objPpt("Presentations", 1) objSlides = objPre("Slides", 2) objShapes = objSlides("Shapes") comres objTextBox objShapes->"AddTextbox" msoTextOrientationHorizontal, 100, 100, 200, 50 objTextFrame = objTextBox("TextFrame") objTextRange = objTextFrame("TextRange") objTextRange("Text") = "あいうえ21132お" comres objTextBox objShapes->"AddTextbox" msoTextOrientationHorizontal, 200, 200, 300, 150 objTextFrame = objTextBox("TextFrame") objTextRange = objTextFrame("TextRange") objTextRange("Text") = "あいうえ21132お" ///////////////////////////////////////////////////////////////// // 参考: https://msdn.microsoft.com/ja-jp/library/office/ff746649.aspx comres objShape objShapes->"AddLine" 50, 50, 400, 50 objLine = objShape("Line") objForeColor = objLine("ForeColor") objForeColor("RGB") = RGB(128, 0, 0) ;?色の指定と太さの指定が分かりません?; objLine("Weight") = 8 ; 太さ ///////////////////////////////////////////////////////////////// // 参考: https://msdn.microsoft.com/ja-jp/library/office/ff745953.aspx // 等倍表示 comres objShape objShapes->"AddPicture" imagePath1, msoFalse, msoTrue, 450, 50 // 拡大表示 comres objShape objShapes->"AddPicture" imagePath2, msoFalse, msoTrue, 750, 50, 200, 200 // 等倍&上下左右反転 comres objShape objShapes->"AddPicture" imagePath3, msoFalse, msoTrue, 750, 250 // 上下左右反転 // 参考: https://msdn.microsoft.com/ja-jp/library/office/ff746709.aspx objShape->"Flip" msoFlipHorizontal objShape->"Flip" msoFlipVertical ///////////////////////////////////////////////////////////////// // objFile.SaveAs strPPTFullPath objFile->"SaveAs" strPPTFullPath // objFile.Close objFile->"Close" // objPpt.Quit objPpt->"Quit" ///////////////////////////////////////////////////////////////// ;dialog "作成したパワーポイントを開きます" exec strPPTFullPath, 16



inovia

リンク

2016/5/11(Wed) 21:39:45|NO.75460

既定のプリンタ、1部、全スライドの印刷の実行であれば割と簡単でした。


// パワポの印刷 dialog "ppt;*.pptx;*.pptm", 16 if stat == 0 : end fname = refstr // ファイルを開く newcom objPpt, "PowerPoint.Application" objPpt("Visible") = 1 objPresentations = objPpt("Presentations") comres objPresentation objPresentations->"Open" fname // 印刷(既定のプリンタ、1部、全スライドの印刷の実行) // https://msdn.microsoft.com/ja-jp/library/office/ff744928.aspx objPresentation->"PrintOut" // 閉じる objPresentation->"Close" // 終了 objPpt->"Quit"



ぺろ

リンク

2016/5/11(Wed) 22:48:16|NO.75465

inoviaさんありがとうございます。
COMオブジェクトの操作とかって何処で学んだらいいんでしょうか?
書き方が独特なので、難しく理解できません
あと、このコードはWindowsXP以降なら動くとかって分かりますか?



ぺろ

リンク

2016/6/19(Sun) 22:06:12|NO.75913

あれからいろいろやりましたが挫折し放置してまして
また、本日いろいろ試しましたがやっぱりできません・・・。
今度は文字の大きさ・フォント・下線・太文字の設定で悩んでおります。
いろいろサイトを見ましたが私にはまったく理解できませんでした・・・。
誰かお助けください・・・T_T



#define ctype RGB(%1,%2,%3) (%1 | %2 << 8 | %3 << 16) #define msoFalse 0 #define msoTrue 1 #define msoFlipHorizontal 0 #define msoFlipVertical 1 // 下記の二つのサイトを参考にしました // 参考: http://www.excel.studio-kazu.jp/kw/20150921184703.html // 参考: https://msdn.microsoft.com/ja-jp/library/office/ff744611.aspx // 画像パス imagePath1 = dir_tv + "jp6girl.bmp" imagePath2 = dir_tv + "king_knight.bmp" imagePath3 = dir_tv + "logop.bmp" // C:\test がない場合は作る処理 chdir "C:\\" dirlist dummy, "test", 5 if stat == 0 { dialog "ディレクトリ 'C:\\test\\' を作成しました" mkdir "test" } ///////////////////////////////////////////////////////////////// // strPPTFullPath = "C:\test\output.ppt" strPPTFullPath = "C:\\test\\output.ppt" // Set objPpt = CreateObject("PowerPoint.Application") newcom objPpt, "PowerPoint.Application" // objPpt.Visible = True objPpt("Visible") = 1 // objPpt.Presentations.Add objPre = objPpt("Presentations") objPre->"Add" // Set objFile = objPpt.ActivePresentation objFile = objPpt("ActivePresentation") // Set pslide1 = objFile.Slides.Add(1, 12) // Set pslide2 = objFile.Slides.Add(1, 12) objSlides = objFile("Slides") comres pslide1 objSlides->"Add" 1, 12 comres pslide2 objSlides->"Add" 1, 12 // objPpt.Presentations(1).Slides(2).Shapes.AddTextbox(msoTextOrientationHorizontal _ // , 100, 100, 200, 50).TextFrame.TextRange.Text = Range("A1") msoTextOrientationHorizontal = 1 objPre = objPpt("Presentations", 1) objSlides = objPre("Slides", 2) objShapes = objSlides("Shapes") comres objTextBox objShapes->"AddTextbox" msoTextOrientationHorizontal, 100, 100, 200, 50 objTextFrame = objTextBox("TextFrame") objTextRange = objTextFrame("TextRange") objTextRange("Text") = "あいうえ21132お" comres objTextBox objShapes->"AddTextbox" msoTextOrientationHorizontal, 200, 200, 300, 150 objTextFrame = objTextBox("TextFrame") objTextRange = objTextFrame("TextRange") ;objTextRange("FontSize") = 2 / フォントのサイズが指定できない・・・ / objTextRange("Text") = "あいうえ21132お"



ONION software Copyright 1997-2023(c) All rights reserved.