Страницы: 1
RSS
Выпадающий список с гиперссылками на внешние файлы
 
              Уважаемые специалисты !
         Прошу помощи в решении такой задачи.
     Хочу сделать озвучку англоязычных слов и банально расположить в папке с файлом Excel wav или mp3 файлики, которые бы озвучивали конкретное слово.
 В листе "источник" в столбцах с заголовками 1, 2, 3 (для каждой таблицы отдельный перевод) будут находится гиперссылки на внешние файлы wav.
     Хотел бы сделать так, чтобы в листе "времена" в ячейках M10, M15, M16, M18, M19 находились выпадающие списки с гиперссылкой на wav.файл.
При этом, такие выпадающие списки были бы зависимые (автоматически менялось значение выпадающего списка) от того слова, которое выбираешь напротив.

Зависимость выпадающих списков следующая H8 - M10, H15 - M15, H16 - M16, H18 - M18, H19 - M19.
 
     Например, в ячейке H8 выбираешь слово speed, а выпадающий список в ячейке M10 автоматом показывает путь C:\папка\speed.wav. При щелчке на такую гиперссылку, конечно, откроется проигрыватель...
       
    P/s. Пробовал на листе "источник" в ячейку вносить формулу =ГИПЕРССЫЛКА("С:\Папка\speed.mp3"), а потом выводить выпадающий список, но получается, что ссылка "съедается" и остаётся неактивный путь.    

 
 
как понял ТЗ:
1. распаковать в С:\
2. при изменении в ячейке "H8" гиперссылка создается макросом от значения в "H8"
3. остальные "зависимости выпадающих списков" - по аналогии
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
Можно обойтись и без звуковых файлов - есть команда "Проговорить ячейки".
 
         Ёк-Мок, спасибо, что отозвались. В целом Вы смысл уловили, но есть два "но".

1. Распаковал на рабочий стол папку, запустил проигрыш первого слова - open и звук проигрался. После того, как выбрал второе слово из списка wav выскочило сообщение, что "не удаётся открыть указанный файл".

         По пункту "3", а как распространить такой макрос и на другие ячейки (M15, M16, M18, M19) ?

2. Конечно, я не ограничивал решение задачи методом её решения (макрос или формула). Но если это каким-то образом возможно, как сделать выпадающий список формулой, но с живыми гиперссылками ? Дело в том, что файл будет для третьих лиц и если папка будет распаковываться на другой диск (или будет необходимость изменить адреса гиперссылок), то непосвященный пользователь не сможет изменить макрос (в частности я могу посмотреть, что Вы прописали, но сам в этом не разбираюсь :( ).
       А если такие гиперссылки будут в ячейках, то пользователю достаточно будет изменить адрес во всех ячейках (банально через окно замены) и звуки проиграются.

P/s.  Я хотел бы максимально приблизить работу выпадающих списков по озвучке, в таком же формате, как работают зависимые выпадающие списки ячеек со словами (это H8, M15, M16, M18, M19), которые через формулы, соответственно, подтягивают нужные значения из листа "источник".

       Подготовил обновленный файл с выпадающими списками, которые содержат мёртвые пути к звуковым файлам. Как их оживить  :) (по возможности формулой) ?
 
Изменено: Vitulus - 03.12.2015 00:05:05
 
>>> Распаковал на рабочий стол
распаковать нужно в корневую папку диска С
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
Да, тут ошибся...У меня вопрос по макросу (раз у меня нет альтернатив  :) ). Я в макросах, к сожалению, ничего не понимаю...Взял и ниже данного макроса  
Код
      Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, Range("H8")) Is Nothing Then
     ActiveSheet.Hyperlinks.Add Anchor:=[M9], Address:="C:\ПАПКА\" & Target.Value & ".mp3", TextToDisplay:="Кликнуть для озвучивания"
     End If
     End Sub

         вставил такую же строку..., но только изменил Target, Range("H8") на Target, Range("H15")  а Add Anchor:=[M9] на  Add Anchor:=[M9] и т.д.
Выскочила ошибка, я так понимаю, что так прописывать нельзя.
   
 
       Ёк-Мок, подскажите, пожалуйста, как можно применить Ваш макрос на остальные пары ячеек  :qstn: Ваше решение, достаточно, симпатично выглядит :) .
В свою очередь, я решил эту задачу другим способом, может быть он и корявый, но рабочий.
     В ячейках "со ссылками на озвучку" работает функция ВПР, которая вытягивает путь к звуковому файлу из листа "источник".
При этом формула ВПР "обернута" в функцию ГИПЕРССЫЛКА, которая оживляет путь к звуковому файлу :) .

=ГИПЕРССЫЛКА(ВПР(H8;Источник!D3:I53;6;0))
 
>>> файл будет для третьих лиц и если папка будет распаковываться на другой диск...
см.вложение (звуковые файлы должны быть по тому же адресу, что и файл Excel)
Изменено: Ёк-Мок - 02.12.2015 15:57:09
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
>>> Выскочила ошибка, я так понимаю, что так прописывать нельзя.
Событие по которому отрабатывает макрос Private Sub Worksheet_Change - это событие "изменение листа" пользователем. И прописывать действия макроса по этому событию необходимо в теле этой же процедуры, а не клонировать их. И если бы изменения пользователем были бы в трех ячейках (H8, H15 и H18), то было бы:
Код
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("H8")) Is Nothing Then
ActiveSheet.Hyperlinks.Add Anchor:=[M9], Address:="C:\папка\" & Target.Value & ".wav", TextToDisplay:="Кликнуть для озвучивания"
End If

If Not Intersect(Target, Range("H15")) Is Nothing Then
ActiveSheet.Hyperlinks.Add Anchor:=[M15], Address:="C:\папка\" & Target.Value & ".wav", TextToDisplay:="Кликнуть для озвучивания"
End If

If Not Intersect(Target, Range("H18")) Is Nothing Then
ActiveSheet.Hyperlinks.Add Anchor:=[M18], Address:="C:\папка\" & Target.Value & ".wav", TextToDisplay:="Кликнуть для озвучивания"
End If

End Sub

Но в Вашем случае значения ячеек H15 и H18 подтягиваются формулами, а не пользователем. Поэтому достаточно отловить изменения в ячейке H8:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("H8")) Is Nothing Then
xxx = ActiveWorkbook.Path'адрес расположения файла Excel
ActiveSheet.Hyperlinks.Add Anchor:=[M9], Address:=xxx & "\" & [H8].Value & ".wav", TextToDisplay:="Кликнуть для озвучивания"
ActiveSheet.Hyperlinks.Add Anchor:=[M15], Address:=xxx & "\" & [H15].Value & ".wav", TextToDisplay:="Кликнуть для озвучивания"
ActiveSheet.Hyperlinks.Add Anchor:=[M18], Address:=xxx & "\" & [H18].Value & ".wav", TextToDisplay:="Кликнуть для озвучивания"
End If
End Sub
см.файл в посте #8
Изменено: Ёк-Мок - 02.12.2015 16:22:51
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
Цитата
Ёк-Мок написал: H15 и H18 подтягиваются формулами
         И не только H15 и H18, но значения появляются и в ячейках H16 и H19, но только в том случае, если выбираешь на этом листе ТОП_218.
В зависимости от выбранного значения в M2 подтягивается список из листа "источник" либо в ячейки H15 и H18, либо H16 и H19.
        Но что удивительно, что несмотря на то, что Вы прописали "Ancor" для M9, M15 и M18 и при этом M16 и M19 "выпали", то всё равно проигрываются все файлы, вне зависимости от того, в каких ячейках появляются слова (либо в H15 - H16, либо в H18 - H19)  :).
        В общем, Ваш вариант, конечно, изящный по сравнению с выпадающими путями к звуковому файлу.
БРАВО !

         
 
>>> Но что удивительно...
В данном случае удивление не есть хорошо ): Потому что выбор ТОП_218 или ТОП_50 в макросе не учитывается и приведет к ошибке. Добавил условия ТОП_...
Изменено: Ёк-Мок - 02.12.2015 18:43:13
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
А чего проигнорировали #3? Одна строка кода ))
 
Цитата
Юрий М написал: А чего проигнорировали #3?
     Во-первых, спасибо за наводку, что такое вариант имеется. Попробовал данную функцию. Есть два минуса. Нужно каждому пользователю нужно объяснить (если кто-то не разбирается в Excel), где эту функцию находить и как кнопку вытаскивать на панель...Во-вторых, субъективно, озвучка может быть гораздо хуже, чем будет в списке проигрываемых файлов.
     
 
Цитата
Ёк-Мок написал: Добавил условия ТОП_...
Обязательно проверю последний вариант. Но я бы не стал утверждать, что предпоследний вариант (когда я удивился) мог бы привести к ошибке...Во всяком случае, я это не констатировал :).
 
Цитата
Vitulus написал:
Нужно каждому пользователю нужно объяснить (если кто-то не разбирается в Excel), где эту функцию находить и как кнопку вытаскивать на панель
Необязательно: можно сделать при активации ячейки, при двойном или правом клике - это ведь можно объяснить? ))
А про качество согласен.
Зато не нужно хранить кучу аудиофайлов )
 
Ёк-Мок, прошу Вас помочь немного откорректировать Ваш драгоценный код  :).
В общем, смысл в том, что возникла необходимость дополнить ячейку (I8) выпадающим списком, значение которого подтягивается без цифры в ячейку (I9 и I11 с помощью формулы).
       Проблема заключается в том, что теперь слова из ячеек I9, I15, I18 перестали озвучиваться (при изменении слов).
Но если в I9 просто прописать слово, то всё озвучивается. Проблема только в том, что если слово в ячейку (I9 и I11) попадает с помощью формулы (ВПР или Substring и т.д.), то озвучка пропадает  :(.  
       
 
Страницы: 1
Наверх