Я новичок в VBA и мне нужна ваша помощь. Я кодирую в проекте VBA внутри экземпляра PowerPoint. Я запрограммировал userRibbon, чтобы сделать что-то, и это работает хорошо. Теперь я добавил один функционал. Его задача - получить имя пользователя (логин учетной записи P C) и записать его на слайд в PowerPoint. Существует разница между тем, кто является докладчиком, а кто - создателем презентации PowerPoint. Поэтому нормальное поле ввода не является оптимальным для этого решения. Я добавил новую форму в свой проект и разработал ее. Два текстовых поля и две кнопки, OK и Отмена.
Теперь, по VBA.Interaction.Environ $ ("username") Я получаю имя пользователя. По этому имени я устанавливаю оба текстовых поля, затем хочу показать мою форму, ожидающую подтверждения. Это точка, где Powerpoint абсолютно зависает, и это моя проблема. Нет ошибок, ничего. Необходимо вызвать диспетчер задач и отключить презентацию Powerpoint. Если я устанавливаю точку останова в начале процедуры и начинаю шагать по коду, процедура завершается sh хорошо, без замораживания. Я не знаю, почему! Пожалуйста, вы мне поможете?
private speaker as String
private creator as String
Sub GetUserName()
Dim strDisplayName As String
Dim objUser As Variant
objUser = VBA.Interaction.Environ$("username") ' return username
'open DB
Call OpenDatabase
'load data from DB, I want name, not usernam
rst.Open"SELECT name FROM tbl_User WHERE login = '" & objUser & "' ;", ..........
if rst.RecordCount > 0 Then
strDisplayName = rst(0)
else
.....
end if
'close DB
Call Closedatabse
myInputBox.TextBox1.Text = strDisplayName 'fill first textBox
myInputBox.TextBox2.Text = strDisplayName 'fill second textBox
myInputBox.Show <= point of freezing
Call WriteUserNames(speaker, creator) ' write name into the slide
End Sub