powerpoint中的视觉基础

时间:2014-07-01 11:39:41

标签: excel-vba powerpoint office-interop vba excel

我有时会在visual basic中为excell创建宏。但是我从来没有用过PowerPoint。我有一个带有很多照片的powerpoint。图片都在目录中。有时我会更改目录中保留原始名称的图片。显然在PowerPoint中没有办法刷新图片的新版本。但我可以右键点击图片"更改图片"选择相同的路径。无论如何,我有太多的图片,我不得不经常更改文件。所以我想知道是否有办法处理visual basic。我可以使用目录中文件的名称创建一个向量,其名称与它们在ppt中出现的顺序相同。然后创建一个宏,再次更改所有路径,以便图片升级。我不知道我可以使用的代码。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我不知道怎么用"宏" 但! 您可以使用Office Interop - 并对此进行编码。 看看这个网站: http://www.free-power-point-templates.com/articles/how-to-create-a-powerpoint-presentation-using-c-and-embed-a-picture-to-the-slide/ 基本上你可以编写一个.Net程序,通过Office Interop

执行此操作

希望这会有所帮助...

修改 上面链接的主要代码部分:

string pictureFileName = "C:\\temp\\example.jpg"; 

Application pptApplication = new Application();

Microsoft.Office.Interop.PowerPoint.Slides slides;
Microsoft.Office.Interop.PowerPoint._Slide slide;
Microsoft.Office.Interop.PowerPoint.TextRange objText;

// Create the Presentation File
Presentation pptPresentation = pptApplication.Presentations.Add(MsoTriState.msoTrue);

Microsoft.Office.Interop.PowerPoint.CustomLayout customLayout = pptPresentation.SlideMaster.CustomLayouts[Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText];

// Create new Slide
slides = pptPresentation.Slides;
slide = slides.AddSlide(1, customLayout);

// Add title
objText = slide.Shapes[1].TextFrame.TextRange;
objText.Text = "FPPT.com";
objText.Font.Name = "Arial";
objText.Font.Size = 32;

objText = slide.Shapes[2].TextFrame.TextRange;
objText.Text = "Content goes here\nYou can add text\nItem 3";

Microsoft.Office.Interop.PowerPoint.Shape shape = slide.Shapes[2];
slide.Shapes.AddPicture(pictureFileName,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoTrue,shape.Left, shape.Top, shape.Width, shape.Height);

slide.NotesPage.Shapes[2].TextFrame.TextRange.Text = "This demo is created by FPPT using C# - Download free templates from http://FPPT.com";



pptPresentation.SaveAs(@"c:\temp\fppt.pptx", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue);
//pptPresentation.Close();
//pptApplication.Quit();