В вашем вопросе так много всего, что нужно распаковать.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.
Удачи и удачного кодирования