1

如果我在 PowerPoint 幻灯片上设置了一个包含我需要的所有文本框的模板,我应该使用什么 Visual Basic 在这些文本框中输入我想要的文本?

使用模板对我来说更容易,因为这些 ppt 简介包含(或需要包含)大量数据:

  • 如何在这些文本框中输入文本
  • 如何更改特定文本框的字体、大小、粗体字等?
  • 除了在宏之后记录宏并选择文本框之外,是否有一种方法可以确定文本框/形状(“文本框 52”)的“名称”,只是为了从选择中获取对象名称?
  • 如果我使用宏来确定 vba,为什么将其用作 vba 不起作用?我从宏中得到的 vb 似乎有 active.selection,它似乎不能作为 vba 程序工作,因为它不知道选择什么????我认为

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

我知道如何从访问中启动模板(或新演示文稿),以及如何添加新项目(幻灯片、图表、图表、文本),但我不知道如何更改预先存在的文本框!

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

一如既往的感谢!

4

2 回答 2

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

...并且您想将填充颜色应用于您已经引用 as 的形状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"

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

于 2009-07-29T09:39:17.780 回答
0

当我需要自动化 Word 或 Excel 时(我认识或与之共事的人都没有使用 PowerPoint),我打开有问题的应用程序,打开宏录制并执行我想要自动化的任务。然后我使用生成的代码作为我的访问代码的基础。这通常是一个非常简单的过程,有时就像复制和粘贴一样简单,然后在每一行前面加上我在 Access 中使用的应用程序对象。

如果我必须做你正在做的事情,那正是我开始的方式,通过记录交互执行的任务,然后试验代码的哪一部分是必不可少的。

于 2009-08-07T23:57:07.953 回答