Как найти метку фигуры на слайде Powerpoint - PullRequest
0 голосов
/ 23 октября 2018

Может ли кто-нибудь указать мне правильное направление, чтобы найти метку, которую 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 (обозначение);как в Shape (TextBox1).Я не могу понять, как передать вводимый пользователем текст в текстовое поле активного элемента управления x.Я понятия не имею, что такое обозначение.Лист свойств для поля ввода текста называет его TextBox1.Лист кода называет его TextBox1.Когда я передаю этот параметр, он печатает заданный вопрос, а не ответ, в мой текстовый файл.Я не знаю, как вызвать текстовое поле ввода в моем коде.

Screenshot

Мой код печатает "Как вы узнали о нас?"в мой текстовый файл, когда мой код работает с Call WriteAnswerToFile(2, "TextBox 1").Я уверен, что текстовое поле называется текстовое поле 1;это первое текстовое поле на слайде.Я просто не знаю, что Powerpoint помечает поле ввода пользователя.

Если есть какая-то страница сценариев PowerPoint или страница макета, которая будет определять все фигуры в слайд-шоу, я бы хотел указать это направление.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Случайно я наткнулся на самый простой ответ на мой вопрос: «найти метку, которую Powerpoint использует для каждой фигуры, активного элемента x и т. Д.»

Я использую Office 16 (Office 365), который содержит Powerpoint и не уверен, что эта функция доступна для других версий.

На вкладке Home в Powerpoint имеется подменю Editing, содержащее функцию Select.Как показано здесь:

Powerpoint Home Tab

Когда вы нажимаете Select, появляется другое подменю с функцией Selection Pane.Если вы нажмете на это, панель выбора появится в правой части экрана.В этой панели вы увидите все объекты на текущем слайде и названия, которые Powerpoint дал каждому из них.

Powerpoint Selection Pane

Здесь показано расхождение с вызовами TextBox (Space) 1 и TextBox (NoSpace) 1.

Для меня гораздо удобнее выбрать название фигуры, которую я хочу назвать, в своих сценариях VBS.

Я благодарен;однако время и разочарование @Diederik Sieburgh спасли меня, позволив мне продолжить работу над моим проектом, поскольку спустя две недели я наткнулся на эту информацию.

0 голосов
/ 23 октября 2018

Вам просто нужно обратиться к части формы Объекта, так как это не нормальная форма.

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

В окне Immediate отобразится следующее:

TextBox 1
TextBox1
...