如何在Powerpoint幻灯片上查找形状的标签

时间:2018-10-23 03:20:44

标签: vba windows powerpoint

有人能为我指出正确的方向,以便找到Powerpoint用于每种形状,活动x控件等的标签吗?我一直研究到脸色发青为止。这就是我在说的:

我有一个非常简单的幻灯片,在文本框中提出问题。在问题下方,我放置了一个活动的x控件文本框来获取用户的答案。我要做的就是将答案附加到文本文件中。这是代码:

Public Sub WriteAnswerToFile(slideNum As Integer, shapeNum As String)

    Dim filePath As String
    Dim objFSO As FileSystemObject
    Dim objFile As Variant

    filePath = "C:\Batch Files\Powerpoint\ButtonPushes\AnswerFile.txt"

    Const ForAppending = 8

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Batch Files\Powerpoint\ButtonPushes\AnswerFile.txt", ForAppending)

    objFile.WriteLine     (Application.ActivePresentation.Slides(slideNum).Shapes(shapeNum).TextFrame.TextRange)

    objFile.Close

End Sub

从每张幻灯片中,我将幻灯片编号和形状指示符传递给子例程。 shapeNum是一个字符串,因为我发现它可以(例如,没有比这更好的理由)将“ TextBox 1”之类的参数作为参数传递。如果我知道Shape(designator),那么这一切都很棒。如Shape(TextBox1)中一样。为了我的一生,我无法弄清楚如何将用户输入的文本传递到活动的x控件文本框中。我不知道这个代号是什么。文本输入框的属性表将其称为TextBox1。代码表将其称为TextBox1。当我传递该参数时,它会将我问的问题而不是答案打印到我的文本文件中。我不知道如何在代码中调用输入文本框。

Screenshot

我的代码显示“您如何得知我们的?”当我的代码以Call WriteAnswerToFile(2, "TextBox 1")运行时,我的文本文件中会显示该文件。我确定该文本框称为文本框1;这是幻灯片上的第一个文本框。我只是不知道Powerpoint为用户输入框加上了什么标签。

如果有某种Powerpoint脚本或布局页面将定义Slidewhow中的所有形状,我肯定会指出这一方向。

2 个答案:

答案 0 :(得分:0)

由于这不是正常形状,您只需要引用对象的表单部分即可。

objFile.WriteLine (Application.ActivePresentation.Slides(slideNum).Shapes(shapeNum).OLEFormat.Object.Text)

从您的评论中澄清。我认为您有两个“文本框1”。一个是“ TextBox 1”(注意空格),它是普通的文本框,而ActiveX控件是“ TextBox1”(没有空格)。

如果我创建一个新的空白幻灯片,然后先添加一个普通的文本框,然后添加一个ActiveX文本框,然后运行以下代码:

For Each shp In Slide2.Shapes
    Debug.Print shp.Name
Next shp

立即窗口将显示以下内容:

TextBox 1
TextBox1

答案 1 :(得分:0)

碰巧我偶然发现了一个最简单的答案,即“找到Powerpoint用于每种形状,活动x控件等的标签。”

我正在使用包含Powerpoint的Office 16(Office 365)套件,并且不确定此功能是否可用于其他版本。

在Powerpoint的Home选项卡上,有一个Editing子菜单,其中包含一个Select函数。如图所示:

Powerpoint Home Tab

当您单击Select时,会出现另一个子菜单,其中显示了Selection Pane功能。如果单击它,则选择窗格将显示在屏幕的右侧。在该窗格中,您将看到当前幻灯片上的所有对象以及Powerpoint为每个对象赋予的名称。

Powerpoint Selection Pane

它显示那里,我在调用TextBox(Space)1和TextBox(NoSpace)1时存在差异。

这对我来说更方便,因为它可以在VBS脚本中获取要调用的形状的名称。

我很感激;但是,由于时间和沮丧,@ Diederik Sieburgh避免了让我继续进行我的项目,因为现在两周后我迷失了这一信息。