Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/56: Рейтинг темы: голосов - 56, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 11.01.2016
Сообщений: 27

Автозапуск макроса со слайдом PowerPoint

09.03.2016, 23:55. Показов 11323. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать так, чтобы при запуске следующего слайда VBA начал выполнять код . Есть какие-нибудь мысли?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2016, 23:55
Ответы с готовыми решениями:

Автозапуск слайда в PowerPoint
Господа, подскажите как сделать макрос в PowerPoint, чтобы он запускался при показе слайда?

PowerPoint написание макроса
Здравствуйте. Помогите написать макрос для PowerPoint, который увеличивает значение в текстовом поле на единицу при нажатие на него. Нужно...

Автоматический запуск макроса, PowerPoint
Привет! Мне надо, чтобы в PowerPoint автоматически запускался макрос по созданию презентации без открытия самого PowerPoint. В Ecxel...

7
 Аватар для KoGG
5644 / 1626 / 418
Регистрация: 23.12.2010
Сообщений: 2,443
Записей в блоге: 1
10.03.2016, 14:55
Лучший ответ Сообщение было отмечено Serg8412 как решение

Решение

Кривой путь.
Вложения
Тип файла: rar Запуск_процедуры_при_показе_слайда2.rar (39.2 Кб, 224 просмотров)
2
1 / 1 / 0
Регистрация: 11.01.2016
Сообщений: 27
06.04.2016, 17:05  [ТС]
Благодарю!!!
0
 Аватар для karam_s
3 / 3 / 0
Регистрация: 25.06.2015
Сообщений: 50
07.12.2016, 10:45
KoGG,
подскажите, пожалуйста,
что нужно дописать в Вашем примере, чтобы код срабатывал при показе каждого слайда (№3, 4, 5...)?
Это нужно для организации тестирования.
Есть код VBA, выводящий таймер на каждый слайд. Таймер показывает время, оставшееся до смены слайда (и перехода к следующему вопросу теста).

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Public DisplaySeconds As Double, StartTime As Double, StopTime As Double, FrmtString As String
 
Public Sub BreakLengthInSeconds_Change()
    DisplaySeconds = Me.BreakLengthInSeconds
    Me.Shapes(1).TextFrame.TextRange.Text = IIf(DisplaySeconds < 60, "время (00:", "") & DisplaySeconds
End Sub
 
Public Sub StartTimer_Button_Click()
 
On Error GoTo Trap
 
StartTime = Timer
StopTime = StartTime + Me.BreakLengthInSeconds
 
    Do While Timer < StopTime
        DoEvents
        DisplaySeconds = (StopTime - Timer) / 86400
        FrmtString = Format(DisplaySeconds, "h:m:ss")
        If Left(FrmtString, 2) = "0:" Then FrmtString = Mid(FrmtString, 3)
        
        Me.Shapes(1).TextFrame.TextRange.Text = "время (" & FrmtString & ")"
       
    Loop
    
    Me.Shapes(2).Visible = msoTrue
    
    SlideShowWindows(1).View.Next
    
Trap:
    Err = 0
    Me.StartTimer_Button.Caption = "Start Timer"
    Exit Sub
 
End Sub
 
Public Sub Slide1_SetFocus()
    Me.Shapes(2).Visible = msoTrue
    Me.Shapes(4).Visible = msoFalse
End Sub
К сожалению, не понимаю, как это всё работает.
Но это срабатывает при нажатии кнопки на слайде. Время для отсчёта задаётся в отдельном поле (BreakLengthInSeconds), находящемся за пределами границ слайда.

Для удобства работы, желательно, чтобы макрос таймера начал запускаться не от нажатия кнопки на экране, а при переходе к слайду с текстом теста.
Т.е. - первый слайд - Титульный.
переходим ко второму слайду (нажатие пробела) - автоматически начинает работать таймер обратного отсчёта.
Как это реализовать не знаю.
0
 Аватар для karam_s
3 / 3 / 0
Регистрация: 25.06.2015
Сообщений: 50
07.12.2016, 11:34
Присоединяю файл с таймером, чтобы понятнее была работа макроса.
Вложения
Тип файла: rar timer.rar (42.8 Кб, 83 просмотров)
0
 Аватар для KoGG
5644 / 1626 / 418
Регистрация: 23.12.2010
Сообщений: 2,443
Записей в блоге: 1
07.12.2016, 17:08
Visual Basic
1
2
3
Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
   ' Здесь вызов Вашего кода
End Sub
0
 Аватар для karam_s
3 / 3 / 0
Регистрация: 25.06.2015
Сообщений: 50
08.12.2016, 06:56
KoGG, спасибо.
Прошу пояснить.
Код
Visual Basic
1
2
3
Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
   ' Здесь вызов Вашего кода
End Sub
расположен в подготовленном Вами файле в разделе EventClassModule.
Там записано:
Visual Basic
1
2
3
4
5
Public WithEvents App As Application
 
Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
    If SlideShowWindows(1).View.Slide.SlideNumber = 2 Then My_sub
End Sub
Как мне сделать, чтобы код таймера запускался на 3, 4, 5 ... слайдах?
Нужно в этом же разделе указывать номера слайдов с новой стоки? Или процедуру If чем-то завершать?

Для запуска макроса MsgBox "My_sub!" у Вас предусмотрен код, вызываемый по нажатию кнопки на первом слайде.
Можно ли это обойти, чтобы запустить презентацию с титульного слайда, и затем при переходе на второй слайд началось выполнение кода таймера на этом слайде (с одновременным представлением вопросов теста)?
0
 Аватар для KoGG
5644 / 1626 / 418
Регистрация: 23.12.2010
Сообщений: 2,443
Записей в блоге: 1
08.12.2016, 15:34
Visual Basic
1
2
3
Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
    If SlideShowWindows(1).View.Slide.SlideNumber > 2 Then StartTimer_Button_Click
End Sub
Обойти нажатие кнопки нельзя.
Хотя бы в первой демонстрации надо нажать, а в последующих повторениях уже не нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2016, 15:34
Помогаю со студенческими работами здесь

Автозапуск макроса в Access
Здравствуйте! Подскажите пожалуйста, как организовать автозапуск макроса при открытии БД в Access, с последующим удалением всех записей в...

Автозапуск макроса в Excel
Вот что-то не соображу, как сделать так, что бы при открытии любого файла Excel запускался макрос. Наверное старый стал... Дело в том, что...

Автозапуск VBA макроса
Народ, как сделать так, чтобы мой макрос на VBA автоматически запускался при открытии Excel-файла, в котором он написан?

Автозапуск макроса каждые 10 минут
Нужно, что бы макрос запускался через каждые 10 минут. Помогите кто может!!!

Автозапуск макроса на открытии документа
В общем, у пользователей стоит повышенная защита от макросов - как снять програмно ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru