2009-07-28 42 views
1

如果我成立了PowerPoint幻灯片模板,包含所有的文本框,我需要的是什么的Visual Basic做我用它来进入,我想为这些文本框的文本?VBA的改变PowerPoint 2003中Presentations-活动不是新

这是我更容易使用模板,因为这些PPT简报包含(或必须包含)大量的数据:

  • 我怎么输入文本,这些文本框
  • 怎么办你改变特定文本框的字体,大小,fontbold等?
  • 是有确定的“名称”文本框/形状比宏录制后,宏和选择的文本框,只是为了让从选择的对象名称等(“文本框52”)的一种方式?
  • 如果我使用宏来确定VBA,为什么将它无法正常工作使用,作为VBA?我从一个宏得到的VB似乎有active.selection,这似乎并不像vba程序那样工作,因为它不知道要选择什么。我认为

我想要做的是创建从访问,使用模板结束游戏ppt。在访问表单上,我希望有多个文本框将信息传递到幻灯片上的ppt文本框。

我知道如何从进入发射模板(或新的演示文稿),以及如何增加新项目(幻灯片,图表,文本),但我不知道如何改变预先存在的文本框!

请帮助....我的工作是需要这个像昨天!

一如既往的感谢!

回答

2

您可以通过名称访问的形状,如:

Dim oSlide As Slide 
Set oSlide = ActivePresentation.Slides(1) 

Dim oShape As Shape 
Set oShape = oSlide.Shapes(strShapeName) 

Dim oTextRange As TextRange 
Set oTextRange = oShape.TextFrame.TextRange 

oTextRange.Text = "this is some text" 

oTextRange.Font.Bold = msoTrue 

注意,无论你正在寻找做,只是记录你通过UI做一个宏,并复制。你说得对,录制的宏将使用Selection对象很多,但是这很容易固定 - 我们只需要到相应的Shape对象(或其他)的引用,然后替补多,在生成的代码。

因此,举例来说,如果改变形状的填充颜色所录制的宏是这样的:

With ActiveWindow.Selection.ShapeRange 
    .Fill.Visible = msoTrue 
    .Fill.Solid 
    .Fill.ForeColor.RGB = RGB(255, 0, 0) 
    .Fill.Transparency = 0# 
End With 

...你想填充颜色应用到你已经有一个形状参考为oShape,然后将代码改成这样:

With oShape 
    .Fill.Visible = msoTrue 
    .Fill.Solid 
    .Fill.ForeColor.RGB = RGB(255, 0, 0) 
    .Fill.Transparency = 0# 
End With 

要得到的形状的当前名称,你可以在“立即”窗口中的VBA编辑器输入:

?ActiveWindow.Selection.ShapeRange(1).Name 

你可以把它转换成一个(单)宏很容易:

Sub ShowMeTheName() 
    MsgBox ActiveWindow.Selection.ShapeRange(1).Name 
End Sub 

注意,我会亲自命名的形状为有意义的,而不是使用默认的名称。只需在即时窗口中执行此操作:

ActiveWindow.Selection.ShapeRange(1).Name = "MyName" 

...或者创建一个宏来提示输入名称。

+0

哇...这是一个很好的答案。除了你知道你在说什么这个事实之外,你把它分解成像我这样的黑客! 非常感谢您的帮助! – Justin 2009-07-29 17:31:01

+0

所以我用这个,它工作得很好,但我不能改变一个子程序中的多个文本框。我试图通过: 暗淡oShape1为形状 暗淡oTextRange1为TextRange的,等等等等 但它仍然只是改变所选的第一个文本框,与第二选择/写文本字符串 我做错了什么? – Justin 2009-07-29 19:17:34

+0

哎呀,没关系......我错过了一个。现在明白了!再次感谢这有助于我在正确的方向朝大好时机前进! – Justin 2009-07-29 19:19:31

0

当我需要自动化Word或Excel(我认识的人或工作有任何的PowerPoint使用),我有问题打开应用程序,打开宏录制,并且我要自动运行的任务。然后,我使用生成的代码作为我的Access代码的基础。这通常是一个非常简单的过程,有时候就像复制和粘贴一样简单,然后用我在Access中使用的应用程序对象预处理每行。

如果我不得不这样做,你在做什么,这正是我怎么会开始,通过做记录正在交互执行的任务,然后用什么代码的一部分,是必不可少的实验。

+0

谢谢。这实际上是我最近一直在做的事情,迄今为止它在大多数事情上都工作得很好。我根本不知道如何找出对象的名称问题,解决了让我掉上面的代码.... 谢谢你们! – Justin 2009-08-09 22:24:45