none
对于VSTO中PPT中代码添加文本和图片? RRS feed

  • 问题


  •         private void AddTextBox(PowerPoint.Slide slide, string txtContent)
            {
                PowerPoint.Shape textbox;
                textbox = slide.Shapes.AddTextbox(Office.MsoTextOrientation.msoTextOrientationHorizontal, 50, 100, 600, 50);//向当前PPT添加文本框
                textbox.TextFrame.TextRange.Text = txtContent;//设置文本框的内容
                textbox.TextFrame.TextRange.Font.Size = 48;//设置文本字体大小
                textbox.TextFrame.TextRange.Font.Color.RGB = Color.DarkViolet.ToArgb();//设置文本颜色
            }

            private void AddPicture(PowerPoint.Slide slide, PowerPoint.Shape shape, string filePath)
            {
                PowerPoint.Shape pic;
                pic = slide.Shapes.AddPicture(filePath, Office.MsoTriState.msoFalse, Office.MsoTriState.msoTrue, shape.Left, shape.Top, shape.Width, shape.Height);
                pic.Name = "广告图片";
                pic.Height = shape.Height;
                pic.Width = shape.Width;
            }

            private void AddTextMessage(PowerPoint.Slide slide, PowerPoint.Shape shape, string txtContent)
            {
                PowerPoint.Shape textbox;
                textbox = slide.Shapes.AddTextbox(Office.MsoTextOrientation.msoTextOrientationHorizontal, shape.Left, shape.Top, shape.Width, shape.Height);//向当前PPT添加文本框
                textbox.Height = shape.Height;
                textbox.Width = shape.Width;
                textbox.TextFrame.TextRange.Text = txtContent;
                textbox.TextFrame.TextRange.Font.Color.RGB = Color.Orange.ToArgb();
            }

    路漫漫其修远兮,吾将上下而求索!

    2013年2月6日 7:12

答案

  • PPT中添加文本框、图片、音频、视频、OLE对象(Word\Excel\PPT)

    VSTO中添加文本、图片
    代码参见:

    /// <summary>
            /// 添加图片
            /// </summary>
            /// <param name="slide"></param>
            /// <param name="filePath"></param>
            private void AddADPicture(PowerPoint.Slide slide, string filePath)
            {
                PowerPoint.Shape pic;
                pic = slide.Shapes.AddPicture(filePath, Office.MsoTriState.msoFalse, Office.MsoTriState.msoTrue, 100, 200, 100, 100);
                pic.Name = "GlodonAD";
            }
    
            /// <summary>
            /// 添加多媒体文件
            /// </summary>
            /// <param name="slide"></param>
            /// <param name="filePath"></param>
            private void AddMedia(PowerPoint.Slide slide, string filePath)
            {
                PowerPoint.Shape media;
                media = slide.Shapes.AddMediaObject(filePath, 10, 10, 200, 200);
                media.Name = "Media";
            }
    
    		//对于OLED对象标识:http://msdn.microsoft.com/zh-cn/library/office/ff746158.aspx
    		
            /// <summary>
            /// 通过ClassName创建对象
            /// </summary>
            /// <param name="slide"></param>
            /// <param name="className"></param>
            private void AddOLEDClass(PowerPoint.Slide slide, string className)
            {
                PowerPoint.Shape oledClass;
                oledClass = slide.Shapes.AddOLEObject(50, 50, 800, 500, ClassName: className, DisplayAsIcon: Office.MsoTriState.msoTrue);
                oledClass.Name = "OLEDClassName";
            }
    
            /// <summary>
            /// 通过文件路径,添加文件
            /// </summary>
            /// <param name="slide"></param>
            /// <param name="filePath"></param>
            private void AddOLEDPath(PowerPoint.Slide slide, string filePath)
            {
                PowerPoint.Shape oledFile;
                oledFile = slide.Shapes.AddOLEObject(50, 50, 800, 500, FileName: filePath, DisplayAsIcon: Office.MsoTriState.msoTrue);//, DisplayAsIcon: Office.MsoTriState.msoTrue
                oledFile.Name = "OLEDFilePath";
            }
    方法调用:
     string filePath = "E:\\FF.doc";
                    filePath = "E:\\FF.ppt";
                    filePath = "E:\\FF.xls";
    
                    filePath = @"C:\Users\Administrator\Videos\PB043926.AVI";
                    filePath = @"C:\Users\Administrator\Videos\轻轻的问候.swf";
    
                    //AddMedia(slide, filePath);
    
                    AddOLEDPath(slide, filePath);
    
                    string className = "Excel.Sheet";
                    className = "Word.Document";
                    className = "PowerPoint.Slide";
                    // AddOLEDClass(slide, className);



    路漫漫其修远兮,吾将上下而求索!

    • 已标记为答案 WANG XQ 2013年2月25日 6:10
    2013年2月25日 6:10
  • 你好,

    已经针对 如何使用VSTO对PPT的复制操作进行控制?希望得到解答 这个帖子给出了回复。

    请问这个帖子问题在哪里?


    Quist Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 WANG XQ 2013年2月19日 4:28
    2013年2月7日 4:46

全部回复

  • 这是一些简单的代码,希望自己提的那个问题也能得到大牛的帮助,处理完这个小程序写一篇文章分享一下!

    网上和MSDN 的office2013的开发,对于Word\Excel\Outlook的资料相对还可以,但对于PPT的操作却很少,希望对这一块研究过的大牛能给些意见。


    路漫漫其修远兮,吾将上下而求索!

    2013年2月6日 7:25
  • 你好,

    已经针对 如何使用VSTO对PPT的复制操作进行控制?希望得到解答 这个帖子给出了回复。

    请问这个帖子问题在哪里?


    Quist Zhang [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 WANG XQ 2013年2月19日 4:28
    2013年2月7日 4:46
  • 谢谢回复,已经看到,但好像不是想要的效果。

    路漫漫其修远兮,吾将上下而求索!

    2013年2月19日 2:53
  • PPT中添加文本框、图片、音频、视频、OLE对象(Word\Excel\PPT)

    VSTO中添加文本、图片
    代码参见:

    /// <summary>
            /// 添加图片
            /// </summary>
            /// <param name="slide"></param>
            /// <param name="filePath"></param>
            private void AddADPicture(PowerPoint.Slide slide, string filePath)
            {
                PowerPoint.Shape pic;
                pic = slide.Shapes.AddPicture(filePath, Office.MsoTriState.msoFalse, Office.MsoTriState.msoTrue, 100, 200, 100, 100);
                pic.Name = "GlodonAD";
            }
    
            /// <summary>
            /// 添加多媒体文件
            /// </summary>
            /// <param name="slide"></param>
            /// <param name="filePath"></param>
            private void AddMedia(PowerPoint.Slide slide, string filePath)
            {
                PowerPoint.Shape media;
                media = slide.Shapes.AddMediaObject(filePath, 10, 10, 200, 200);
                media.Name = "Media";
            }
    
    		//对于OLED对象标识:http://msdn.microsoft.com/zh-cn/library/office/ff746158.aspx
    		
            /// <summary>
            /// 通过ClassName创建对象
            /// </summary>
            /// <param name="slide"></param>
            /// <param name="className"></param>
            private void AddOLEDClass(PowerPoint.Slide slide, string className)
            {
                PowerPoint.Shape oledClass;
                oledClass = slide.Shapes.AddOLEObject(50, 50, 800, 500, ClassName: className, DisplayAsIcon: Office.MsoTriState.msoTrue);
                oledClass.Name = "OLEDClassName";
            }
    
            /// <summary>
            /// 通过文件路径,添加文件
            /// </summary>
            /// <param name="slide"></param>
            /// <param name="filePath"></param>
            private void AddOLEDPath(PowerPoint.Slide slide, string filePath)
            {
                PowerPoint.Shape oledFile;
                oledFile = slide.Shapes.AddOLEObject(50, 50, 800, 500, FileName: filePath, DisplayAsIcon: Office.MsoTriState.msoTrue);//, DisplayAsIcon: Office.MsoTriState.msoTrue
                oledFile.Name = "OLEDFilePath";
            }
    方法调用:
     string filePath = "E:\\FF.doc";
                    filePath = "E:\\FF.ppt";
                    filePath = "E:\\FF.xls";
    
                    filePath = @"C:\Users\Administrator\Videos\PB043926.AVI";
                    filePath = @"C:\Users\Administrator\Videos\轻轻的问候.swf";
    
                    //AddMedia(slide, filePath);
    
                    AddOLEDPath(slide, filePath);
    
                    string className = "Excel.Sheet";
                    className = "Word.Document";
                    className = "PowerPoint.Slide";
                    // AddOLEDClass(slide, className);



    路漫漫其修远兮,吾将上下而求索!

    • 已标记为答案 WANG XQ 2013年2月25日 6:10
    2013年2月25日 6:10
  • 对于键盘钩子、鼠标钩子的资料参见:
    [转]VSTO Office二次开发应用程序键盘鼠标钩子

    好像对于鼠标类型和键盘类型的标识有误(键盘应该是2,鼠标应该是7;好像以前是13和14?)

    public enum WH_Codes : int
            {
                //底层键盘钩子
                WH_KEYBOARD_LL = 2,//13
    
                //底层鼠标钩子
                WH_MOUSE_LL = 7, //14
    
                //nCode为0
                HC_ACTION=0
            }
    回头整理一篇技术文章,欢迎关注我的博客和后续博文。


    路漫漫其修远兮,吾将上下而求索!

    2013年2月25日 6:14