Поместите текст из пользовательского ввода PowerPoint в текстовое поле на другом слайде - PullRequest
0 голосов
/ 24 сентября 2018

Может кто-нибудь сказать мне, как получить текст из пользовательского ввода из пользовательской формы для заполнения в текстовое поле на другом слайде?

В настоящее время мой код для кнопки отправки UserForm1 выглядит следующим образом:

Private Sub CommandButton1_Click()
UserName$ = TextBox1.Value
Unload UserForm1
ActivePresentation.SlideShowWindow.View.Next
End Sub

Я считаю, что значение, введенное пользователем в GUI, сохраняется в переменной UserName$, но, что бы я ни пытался, я не могу отобразить текст в текстовом поле на другом слайде.Я пытался использовать поля меток и текстовые поля, но не знаю правильный код.

1 Ответ

0 голосов
/ 24 сентября 2018

В вашем вопросе так много всего, что нужно распаковать.Microsoft потратила наименьшее количество усилий на раскрытие объектной модели PowerPoints через VBA.Используя VBA в Access, Excel, Outlook и Word, вы можете создавать удивительные решения;PowerPoint, не так много.

Сначала, как предложил ashleedawg, вы должны добавить Option Explicit для каждого модуля, класса и кода формы.Вы можете установить его в качестве значения по умолчанию, нажав «Инструменты» (в меню), выбрав «Параметры», а затем отметив «Требуется объявление переменной».

Теперь создайте модуль, нажав «Вставить» в меню, затем выберите «Модуль».Это создаст новый модуль.В модуле введите Public UserName As String.Теперь это позволит переменной UserName быть доступной в любом месте решения.Это глобальная переменная, если хотите.Я обычно вызываю модуль, содержащий мои глобалы modGobals.

Option Explicit

Public UserName As String

Теперь для вашего кода формы.Когда вы создаете текстовое поле на слайде, имя по умолчанию начинается с TextBox, за которым следуют пробел и номер.Вы хотите переименовать текстовое поле.Для этого перейдите в режим просмотра слайдов.На ленте убедитесь, что отображается раздел «Файл».Справа вы увидите область под названием «Редактирование с помощью поиска», «Заменить», «Выбрать».Нажмите на Выбрать.В раскрывающемся меню нажмите «Панель выбора ...». Откроется панель выбора, и вы увидите все объекты на слайде.Когда вы щелкаете по различным объектам слайдов, они будут выделены на панели выбора.

Теперь, когда вы переименовали свое текстовое поле в нечто вроде tbUserName, вы можете обновить свой код, как показано ниже.

Option Explicit

Private pvSlide As Slide
Private pvShp As Shape

Private Sub CommandButton1_Click()

    UserName = TextBox1.Value

    'Assume that slide index 2 contains the text box you want to update
    Set pvSlide = ActivePresentation.Slides(2)

    'set the shape you're going to update
    Set pvShp = pvSlide.Shapes("tbUserName")

    'This is the fun part -- traversing the object tree to get to the
    'right property that so we can update the text box's value
    pvShp.TextFrame2.TextRange.Text = UserName

    Unload UserForm1
    'I'm not sure why you're executing this method.  So I commented it out
    'ActivePresentation.SlideShowWindow.View.Next

End Sub

Когда вы запустите пользовательскую форму, введите текст в текстовое поле и нажмите командную кнопку, введенный вами текст отобразится в текстовом поле на слайде 2.

Удачи и удачного кодирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...