【问题标题】:How to find the label of a shape on a Powerpoint slide如何在 Powerpoint 幻灯片上找到形状的标签
【发布时间】:2018-10-23 03:20:43
【问题描述】:

谁能指出我正确的方向,以找到 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); 这一切都非常好。如形状(TextBox1)。对于我的生活,我无法弄清楚如何将用户输入的文本传递到活动的 x 控件文本框中。我不知道代号是什么。文本输入框的属性表称为 TextBox1。代码表将其称为 TextBox1。当我传递该参数时,它会将我提出的问题而不是答案打印到我的文本文件中。我不知道如何在我的代码中调用输入文本框。

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

如果有某种类型的 Powerpoint 脚本或布局页面可以定义幻灯片中的所有形状,我肯定会指出这个方向。

【问题讨论】:

    标签: vba windows powerpoint


    【解决方案1】:

    你只需要参考 Object 的 form 部分,因为这不是一个正常的形状。

    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
    

    【讨论】:

    • 此解决方案的工作原理与您编写的将我的用户输入框打印到文件中的代码完全相同。解决了一个非常烦人的问题。谢谢!它不再提取问题文本。我不明白“为什么?”。我必须熟悉 OLE 函数。如果shapeNum仍然=TextBox1,是什么让OLE丢弃普通文本框中的文本并从活动x文本框中检索文本。 〜我要学习很多东西。
    • 非常感谢您对显示 For / Next 循环的附加编辑。您已经解决了我的直接问题并完全回答了我最初的问题。这确实为幻灯片上的每个形状提供了标签。显然,我忽略了TextBox1 标签中的空间差异。如果没有您的帮助,我仍然不会知道 Object 函数。即使使用正确的标签,我的 TextFrame.TextRange 函数也不会从活动 x 控件中提取文本。再次感谢!
    【解决方案2】:

    碰巧我偶然发现了对“查找 Powerpoint 用于每个形状、活动 x 控件等的标签”问题的最简单答案。

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

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

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

    它显示了我在调用 TextBox(Space)1 和 TextBox(NoSpace)1 时遇到的差异。

    这对我来说更方便地获取我想在我的 VBS 脚本中调用的形状的名称。

    我很感激;然而,由于时间和挫折,@Diederik Sieburgh 让我得以继续我的项目,因为现在是 2 周后我偶然发现了这些信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      相关资源
      最近更新 更多