|
|
2016/5/10(Tue) 18:43:02|NO.75443
HSPでPowerPointを制御したいなと思っておりまして
HSPからPowerPointへ指定した位置に文字を記入したり線を引いたりしたいなと思っております。
Excelのサンプルは色々落ちてましたがPowerPointのサンプルは落ちてなかったので
投稿させていただきました。
宜しくお願いします。
|
|
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

| |
|
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

| |
|
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

| |
|
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お"

| |
|