如何在 Powerpoint 幻灯片上找到形状的标签
How to find the label of a shape on a Powerpoint slide
谁能给我指明正确的方向,找到 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 控件文本框中。我不知道指示符是什么。文本输入框的 属性 sheet 将其称为 TextBox1。代码 sheet 将其称为 TextBox1。当我传递该参数时,它会将我提出的问题而不是答案打印到我的文本文件中。我不知道如何在我的代码中调用输入文本框。
当我的代码以 Call WriteAnswerToFile(2, "TextBox 1")
运行时,我的代码将 "How did you hear about us?" 打印到我的文本文件。我确定该文本框称为文本框 1;它是幻灯片上的第一个文本框。我只是不知道 Powerpoint 给用户输入框贴上了什么标签。
如果有某种 Powerpoint 脚本或布局页面可以定义幻灯片中的所有形状,我肯定会被指出那个方向。
您只需要参考对象的形状部分,因为这不是正常形状。
objFile.WriteLine (Application.ActivePresentation.Slides(slideNum).Shapes(shapeNum).OLEFormat.Object.Text)
根据您的评论进行澄清。我认为你有两个 "Text Box 1"。一个是 "TextBox 1"(注意 space),它是普通的文本框,ActiveX 控件是 "TextBox1"(没有 space)。
如果我创建一个新的空白幻灯片,首先添加一个普通文本框,然后添加一个 ActiveX 文本框,然后 运行 添加以下代码:
For Each shp In Slide2.Shapes
Debug.Print shp.Name
Next shp
即时 window 将显示以下内容:
TextBox 1
TextBox1
一个偶然的机会,我偶然发现了 "finding the label Powerpoint uses for each shape, active x control, etc.."
问题的最简单答案
我正在使用包含 Powerpoint 的 Office 16 (Office 365) 套件,不确定此功能是否适用于其他版本。
在 Powerpoint 的 Home
选项卡上有一个包含 Select
功能的 Editing
子菜单。如图所示:
当您单击 Select
时,会出现另一个显示 Selection Pane
功能的子菜单。如果单击它,选择窗格将显示在屏幕的右侧。在该窗格中,您将看到当前幻灯片上的所有对象以及 Powerpoint 为每个对象指定的名称。
它显示了我在调用 TextBox(Space)1 和 TextBox(NoSpace)1 时遇到的差异。
这对我来说更方便,可以在我的 VBS 脚本中获取我想调用的形状的名称。
我很感激;然而,@Diederik Sieburgh 救了我的时间和挫败感,让我继续我的项目,因为现在是 2 周后我偶然发现了这个信息。
谁能给我指明正确的方向,找到 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 控件文本框中。我不知道指示符是什么。文本输入框的 属性 sheet 将其称为 TextBox1。代码 sheet 将其称为 TextBox1。当我传递该参数时,它会将我提出的问题而不是答案打印到我的文本文件中。我不知道如何在我的代码中调用输入文本框。
当我的代码以 Call WriteAnswerToFile(2, "TextBox 1")
运行时,我的代码将 "How did you hear about us?" 打印到我的文本文件。我确定该文本框称为文本框 1;它是幻灯片上的第一个文本框。我只是不知道 Powerpoint 给用户输入框贴上了什么标签。
如果有某种 Powerpoint 脚本或布局页面可以定义幻灯片中的所有形状,我肯定会被指出那个方向。
您只需要参考对象的形状部分,因为这不是正常形状。
objFile.WriteLine (Application.ActivePresentation.Slides(slideNum).Shapes(shapeNum).OLEFormat.Object.Text)
根据您的评论进行澄清。我认为你有两个 "Text Box 1"。一个是 "TextBox 1"(注意 space),它是普通的文本框,ActiveX 控件是 "TextBox1"(没有 space)。
如果我创建一个新的空白幻灯片,首先添加一个普通文本框,然后添加一个 ActiveX 文本框,然后 运行 添加以下代码:
For Each shp In Slide2.Shapes
Debug.Print shp.Name
Next shp
即时 window 将显示以下内容:
TextBox 1
TextBox1
一个偶然的机会,我偶然发现了 "finding the label Powerpoint uses for each shape, active x control, etc.."
问题的最简单答案我正在使用包含 Powerpoint 的 Office 16 (Office 365) 套件,不确定此功能是否适用于其他版本。
在 Powerpoint 的 Home
选项卡上有一个包含 Select
功能的 Editing
子菜单。如图所示:
当您单击 Select
时,会出现另一个显示 Selection Pane
功能的子菜单。如果单击它,选择窗格将显示在屏幕的右侧。在该窗格中,您将看到当前幻灯片上的所有对象以及 Powerpoint 为每个对象指定的名称。
它显示了我在调用 TextBox(Space)1 和 TextBox(NoSpace)1 时遇到的差异。
这对我来说更方便,可以在我的 VBS 脚本中获取我想调用的形状的名称。
我很感激;然而,@Diederik Sieburgh 救了我的时间和挫败感,让我继续我的项目,因为现在是 2 周后我偶然发现了这个信息。