Ms access 用于更改PowerPoint 2003演示文稿的VBA-活动不是新的

Ms access 用于更改PowerPoint 2003演示文稿的VBA-活动不是新的,ms-access,vba,powerpoint,Ms Access,Vba,Powerpoint,如果我在PowerPoint幻灯片上设置了一个模板,其中包含我需要的所有文本框,那么我应该使用什么Visual Basic将我想要的文本输入到这些文本框中 我更容易使用模板,因为这些ppt简报包含(或需要包含)大量数据: 如何在这些文本框中输入文本 如何更改特定文本框的字体、大小、字体粗体等 除了在宏之后记录宏并选择文本框之外,是否有其他方法来确定文本框/形状(“文本框52”)的“名称”,仅从选择中获取对象名称 如果我使用宏来确定vba,为什么将其用作vba不起作用?我从宏中得到的vb似乎有a

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

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

  • 如何在这些文本框中输入文本
  • 如何更改特定文本框的字体、大小、字体粗体等
  • 除了在宏之后记录宏并选择文本框之外,是否有其他方法来确定文本框/形状(“文本框52”)的“名称”,仅从选择中获取对象名称
  • 如果我使用宏来确定vba,为什么将其用作vba不起作用?我从宏中得到的vb似乎有active.selection,它似乎不能作为vba过程工作,因为它不知道选择什么????我想
我期待做的是创建游戏结束ppt从访问,使用模板。在访问表单上,我希望有多个文本框,将信息传递到幻灯片上的ppt文本框中

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

请帮忙…我的工作就像昨天一样需要这个


一如既往地谢谢你

您可以按名称访问形状,如中所示:

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记录一个宏,然后复制它即可。您是对的,录制的宏将大量使用
选择
对象,但这很容易修复-只需获取对相应
形状
对象(或任何对象)的引用,然后在生成的代码中替换该对象

因此,例如,如果用于更改形状填充颜色的录制宏是:

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"

…或创建宏以提示输入名称。

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


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

哇……这是一个很好的答案。除了你知道你在说什么之外,你还为我这样的黑客把它搞坏了!非常感谢你的帮助!所以我使用了这个,它工作得很好,但是我不能在一个子过程中修改多个文本框。我试过:dim oShape1作为Shape dim oTextRange1作为TextRange等等,但它仍然只是改变第一个选定的文本框,使用第二个选定/写入的文本字符串,我做错了什么吗?哦,没关系……我错过了一个。明白了!再次感谢这有助于我朝着正确的方向前进!谢谢这实际上是我最近一直在做的事情,到目前为止,它在大多数事情上都运作良好。我只是不知道如何找出有问题的对象的名称,上面的代码解决了这个问题,所以我离开了。。。。谢谢大家!