Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вписывание видеофрагмента в форму. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вписывание видеофрагмента в форму. (Макросы/Sub)
Вписывание видеофрагмента в форму.
SkyGreen Дата: Воскресенье, 28.04.2019, 07:25 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 49
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день, уважаемые форумчане. Помогите разобраться с макросом.

Макрос - вставляет на форму видео по ссылке.
Выглядит код формы - вот так:
[vba]
Код
Private Sub WindowsMediaPlayer1_StatusChange()
UserForm2.WindowsMediaPlayer1.settings.mute = True
On Error Resume Next
  With UserForm2.WindowsMediaPlayer1
  
    UserForm2.WindowsMediaPlayer1.Left = 0
    UserForm2.WindowsMediaPlayer1.Top = 0
    UserForm2.WindowsMediaPlayer1.Width = UserForm2.Width
    UserForm2.WindowsMediaPlayer1.Height = UserForm2.Height ' - 10
    UserForm2.WindowsMediaPlayer1.volume = 0

  End With
End Sub
[/vba]
Но нужно как-то расположить на форме не все видео, а только фрагмент из него.

На самом листе в ячейках F4 и G4 - представлены Высота-Ширина формы.
В ячейках J4 и K4 - представлены координаты центра фрагмента.
В ячейках N4 и O4 - представлены дробями- примерная ширина-высота фрагмента (по отношению к общей ширине и высоте формы).

В общем, для того чтобы нужный фрагмент - более-менее вписался в форму - это видео надо как-то растянуть и выбрать начальную координату размещения этого видео. (Эта координата - будет выходить за левый верхний край формы).
В общем получится что-то навроде такого кода.

[vba]
Код

Private Sub WindowsMediaPlayer1_StatusChange()
UserForm2.WindowsMediaPlayer1.settings.mute = True
On Error Resume Next
  With UserForm2.WindowsMediaPlayer1
  
    UserForm2.WindowsMediaPlayer1.Left = -700
    UserForm2.WindowsMediaPlayer1.Top = -700
    UserForm2.WindowsMediaPlayer1.Width = UserForm2.Width * 5
    UserForm2.WindowsMediaPlayer1.Height = UserForm2.Height * 5 ' - 10
    UserForm2.WindowsMediaPlayer1.volume = 0

  End With
End Sub
[/vba]
То есть начальная координата размещения в форме - будет сдвинута. А размер самого видео - будет увеличен.
И таким образом - можно добиться вписывание видео фрагмента - в форму.

Но вот только как макросом - правильно подобрать эти пропорции - я не понимаю.
Посоветуйте - как это сделать ?
К сообщению приложен файл: 453452.xlsb(70.3 Kb)
 
Ответить
СообщениеДобрый день, уважаемые форумчане. Помогите разобраться с макросом.

Макрос - вставляет на форму видео по ссылке.
Выглядит код формы - вот так:
[vba]
Код
Private Sub WindowsMediaPlayer1_StatusChange()
UserForm2.WindowsMediaPlayer1.settings.mute = True
On Error Resume Next
  With UserForm2.WindowsMediaPlayer1
  
    UserForm2.WindowsMediaPlayer1.Left = 0
    UserForm2.WindowsMediaPlayer1.Top = 0
    UserForm2.WindowsMediaPlayer1.Width = UserForm2.Width
    UserForm2.WindowsMediaPlayer1.Height = UserForm2.Height ' - 10
    UserForm2.WindowsMediaPlayer1.volume = 0

  End With
End Sub
[/vba]
Но нужно как-то расположить на форме не все видео, а только фрагмент из него.

На самом листе в ячейках F4 и G4 - представлены Высота-Ширина формы.
В ячейках J4 и K4 - представлены координаты центра фрагмента.
В ячейках N4 и O4 - представлены дробями- примерная ширина-высота фрагмента (по отношению к общей ширине и высоте формы).

В общем, для того чтобы нужный фрагмент - более-менее вписался в форму - это видео надо как-то растянуть и выбрать начальную координату размещения этого видео. (Эта координата - будет выходить за левый верхний край формы).
В общем получится что-то навроде такого кода.

[vba]
Код

Private Sub WindowsMediaPlayer1_StatusChange()
UserForm2.WindowsMediaPlayer1.settings.mute = True
On Error Resume Next
  With UserForm2.WindowsMediaPlayer1
  
    UserForm2.WindowsMediaPlayer1.Left = -700
    UserForm2.WindowsMediaPlayer1.Top = -700
    UserForm2.WindowsMediaPlayer1.Width = UserForm2.Width * 5
    UserForm2.WindowsMediaPlayer1.Height = UserForm2.Height * 5 ' - 10
    UserForm2.WindowsMediaPlayer1.volume = 0

  End With
End Sub
[/vba]
То есть начальная координата размещения в форме - будет сдвинута. А размер самого видео - будет увеличен.
И таким образом - можно добиться вписывание видео фрагмента - в форму.

Но вот только как макросом - правильно подобрать эти пропорции - я не понимаю.
Посоветуйте - как это сделать ?

Автор - SkyGreen
Дата добавления - 28.04.2019 в 07:25
SkyGreen Дата: Пятница, 03.05.2019, 04:10 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 49
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Как же решить эту проблему ?
Помогите.
 
Ответить
СообщениеКак же решить эту проблему ?
Помогите.

Автор - SkyGreen
Дата добавления - 03.05.2019 в 04:10
Pelena Дата: Пятница, 03.05.2019, 09:07 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 14329
Репутация: 3132 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
У меня даже форма не открывается. Неопознанная ошибка


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеУ меня даже форма не открывается. Неопознанная ошибка

Автор - Pelena
Дата добавления - 03.05.2019 в 09:07
SkyGreen Дата: Пятница, 03.05.2019, 09:29 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 49
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, только что скачал и щелкнув по кнопке "пуск" - открыл форму.
Никакой ошибки не появилось.

У меня Эксель2013 64разрядности.
(ошибка появляется только если запускать с Эксель2008)
 
Ответить
СообщениеPelena, только что скачал и щелкнув по кнопке "пуск" - открыл форму.
Никакой ошибки не появилось.

У меня Эксель2013 64разрядности.
(ошибка появляется только если запускать с Эксель2008)

Автор - SkyGreen
Дата добавления - 03.05.2019 в 09:29
Pelena Дата: Пятница, 03.05.2019, 10:46 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 14329
Репутация: 3132 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Форма так и не открылась, видимо, чего-то не хватает.
Теоретически как-то так можно рассчитать. Проверила на простом изображении. Видео так и не удалось запустить.
[vba]
Код
With UserForm2.WindowsMediaPlayer1
    w = UserForm2.Width / Range("N4") 'ширина видео
    h = UserForm2.Height / Range("O4") 'высота видео
    L = (Range("F4") - w) / 2 'левый край видео при совпадении центров
    T = (Range("G4") - h) / 2 'верхний край видео при совпадении центров
    dx = (Range("J4") - 0.5) * w 'смещение от центра по х
    dy = (Range("K4") - 0.5) * h 'смещение от центра по у
    .Width = w
    .Height = h
    .Left = L + dx
    .Top = T + dy
End With
[/vba]
У картинки ещё пришлось установить свойство[vba]
Код
PictureSizeMode = fmPictureSizeModeStretch
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеФорма так и не открылась, видимо, чего-то не хватает.
Теоретически как-то так можно рассчитать. Проверила на простом изображении. Видео так и не удалось запустить.
[vba]
Код
With UserForm2.WindowsMediaPlayer1
    w = UserForm2.Width / Range("N4") 'ширина видео
    h = UserForm2.Height / Range("O4") 'высота видео
    L = (Range("F4") - w) / 2 'левый край видео при совпадении центров
    T = (Range("G4") - h) / 2 'верхний край видео при совпадении центров
    dx = (Range("J4") - 0.5) * w 'смещение от центра по х
    dy = (Range("K4") - 0.5) * h 'смещение от центра по у
    .Width = w
    .Height = h
    .Left = L + dx
    .Top = T + dy
End With
[/vba]
У картинки ещё пришлось установить свойство[vba]
Код
PictureSizeMode = fmPictureSizeModeStretch
[/vba]

Автор - Pelena
Дата добавления - 03.05.2019 в 10:46
RAN Дата: Пятница, 03.05.2019, 10:52 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5109
Репутация: 1019 ±
Замечаний: 0% ±

2010
видимо, чего-то не хватает.


К сообщению приложен файл: 1147785.jpg(18.5 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
видимо, чего-то не хватает.



Автор - RAN
Дата добавления - 03.05.2019 в 10:52
Pelena Дата: Пятница, 03.05.2019, 10:57 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 14329
Репутация: 3132 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Андрей, да именно так, но не поняла, как исправить :(


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеАндрей, да именно так, но не поняла, как исправить :(

Автор - Pelena
Дата добавления - 03.05.2019 в 10:57
RAN Дата: Пятница, 03.05.2019, 11:08 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5109
Репутация: 1019 ±
Замечаний: 0% ±

2010
Вероятно, найти где-то то самое что-то, которого не хватает, и установить.
Поскольку в referens missing нет, то искать погоду в Африке. :)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВероятно, найти где-то то самое что-то, которого не хватает, и установить.
Поскольку в referens missing нет, то искать погоду в Африке. :)

Автор - RAN
Дата добавления - 03.05.2019 в 11:08
SkyGreen Дата: Пятница, 03.05.2019, 11:23 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 49
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, список References у меня такой:


Сообщение отредактировал SkyGreen - Пятница, 03.05.2019, 11:24
 
Ответить
СообщениеPelena, список References у меня такой:

Автор - SkyGreen
Дата добавления - 03.05.2019 в 11:23
SkyGreen Дата: Пятница, 03.05.2019, 11:42 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 49
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, протестировал вашу схему скрипта.
Получилось вот так (до и после):

ДО

ПОСЛЕ

То есть нужная область - стала немного побольше (но не слишком).
Хотя по идее - она должна более-менее заполнить всю форму.
 
Ответить
СообщениеPelena, протестировал вашу схему скрипта.
Получилось вот так (до и после):

ДО

ПОСЛЕ

То есть нужная область - стала немного побольше (но не слишком).
Хотя по идее - она должна более-менее заполнить всю форму.

Автор - SkyGreen
Дата добавления - 03.05.2019 в 11:42
Pelena Дата: Пятница, 03.05.2019, 16:20 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 14329
Репутация: 3132 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Ещё раз: проверить могу только на картинке. Результат

Последнее предложение в пятом посте прочитали? У видеофрагмента есть такое свойство?
К сообщению приложен файл: 6003927.jpg(54.2 Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЕщё раз: проверить могу только на картинке. Результат

Последнее предложение в пятом посте прочитали? У видеофрагмента есть такое свойство?

Автор - Pelena
Дата добавления - 03.05.2019 в 16:20
SkyGreen Дата: Пятница, 03.05.2019, 18:31 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 49
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, нет - такое свойство есть только у картинки.
У видеопроигрывателя - есть какое-то свойство stretchToFit = True
Но что-то никакой реакции на этот stretchToFit - не наблюдается.
Потом у вас на форме - сама картинка искажается (речь шла об приблизительном увеличении фрагмента без искажений).

Я спрашиваю - потому что увеличение-то на видео действует, только не в тех пропорциях в каких нужно.


Сообщение отредактировал SkyGreen - Суббота, 04.05.2019, 04:39
 
Ответить
СообщениеPelena, нет - такое свойство есть только у картинки.
У видеопроигрывателя - есть какое-то свойство stretchToFit = True
Но что-то никакой реакции на этот stretchToFit - не наблюдается.
Потом у вас на форме - сама картинка искажается (речь шла об приблизительном увеличении фрагмента без искажений).

Я спрашиваю - потому что увеличение-то на видео действует, только не в тех пропорциях в каких нужно.

Автор - SkyGreen
Дата добавления - 03.05.2019 в 18:31
Pelena Дата: Суббота, 04.05.2019, 22:42 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 14329
Репутация: 3132 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Ну, не знаю. Сделала форму, добавила видео и свой код, всё получается, пропорции не искажаются. Только в стандартном модуле последовательность поменяла
[vba]
Код
    UserForm2.WindowsMediaPlayer1.Url = ThisWorkbook.Sheets("Лист3").Range("G14")
    UserForm2.WindowsMediaPlayer1.uiMode = "none"
    UserForm2.Show
[/vba]
К сообщению приложен файл: 0985425.xlsb(19.2 Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеНу, не знаю. Сделала форму, добавила видео и свой код, всё получается, пропорции не искажаются. Только в стандартном модуле последовательность поменяла
[vba]
Код
    UserForm2.WindowsMediaPlayer1.Url = ThisWorkbook.Sheets("Лист3").Range("G14")
    UserForm2.WindowsMediaPlayer1.uiMode = "none"
    UserForm2.Show
[/vba]

Автор - Pelena
Дата добавления - 04.05.2019 в 22:42
SkyGreen Дата: Воскресенье, 05.05.2019, 07:34 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 49
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, тоже поменял последовательность - все осталось по-прежнему.

А вы можете приложить свой файл (тот где все работает) ?
 
Ответить
СообщениеPelena, тоже поменял последовательность - все осталось по-прежнему.

А вы можете приложить свой файл (тот где все работает) ?

Автор - SkyGreen
Дата добавления - 05.05.2019 в 07:34
Pelena Дата: Воскресенье, 05.05.2019, 10:44 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 14329
Репутация: 3132 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Приложила к предыдущему сообщению


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеПриложила к предыдущему сообщению

Автор - Pelena
Дата добавления - 05.05.2019 в 10:44
SkyGreen Дата: Воскресенье, 05.05.2019, 11:38 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 49
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, да, действительно - работает.
Спасибо большое.
Буду изучать.
 
Ответить
СообщениеPelena, да, действительно - работает.
Спасибо большое.
Буду изучать.

Автор - SkyGreen
Дата добавления - 05.05.2019 в 11:38
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вписывание видеофрагмента в форму. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!