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

Вход

Регистрация

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

 

= Мир MS Excel/Открытие файла если он еще не запущен. - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Открытие файла если он еще не запущен.
cerber412 Дата: Понедельник, 02.01.2017, 19:18 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Приветствую вас, знатоки эксель.
Помогите с решением проблемы.

Как заставить макрос - при открытии файла - либо открывать файл 1.mp3 (не в эксель, а в любой сторонней программе) если он еще не запущен?
Но если этот файл уже запущен и проигрывается в Windows - то макрос не должен производить никаких действий.
То есть видимо макрос - должен как-то определять наличие или отсутствие запущенного файла в операционной системе - по его пути в каталоге.
К сообщению приложен файл: 12-.xls (27.5 Kb)


Сообщение отредактировал cerber412 - Понедельник, 02.01.2017, 19:20
 
Ответить
СообщениеПриветствую вас, знатоки эксель.
Помогите с решением проблемы.

Как заставить макрос - при открытии файла - либо открывать файл 1.mp3 (не в эксель, а в любой сторонней программе) если он еще не запущен?
Но если этот файл уже запущен и проигрывается в Windows - то макрос не должен производить никаких действий.
То есть видимо макрос - должен как-то определять наличие или отсутствие запущенного файла в операционной системе - по его пути в каталоге.

Автор - cerber412
Дата добавления - 02.01.2017 в 19:18
bmv98rus Дата: Вторник, 03.01.2017, 00:37 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
cerber412,

А к чему тут приложить слово Excel?


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеcerber412,

А к чему тут приложить слово Excel?

Автор - bmv98rus
Дата добавления - 03.01.2017 в 00:37
cerber412 Дата: Вторник, 03.01.2017, 09:06 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
А к чему тут приложить слово Excel?


Ссылка на файл - находится в ячейке Excel и команда на запуск - тоже дается именно в Excel.


Сообщение отредактировал cerber412 - Вторник, 03.01.2017, 09:07
 
Ответить
Сообщение
А к чему тут приложить слово Excel?


Ссылка на файл - находится в ячейке Excel и команда на запуск - тоже дается именно в Excel.

Автор - cerber412
Дата добавления - 03.01.2017 в 09:06
bmv98rus Дата: Вторник, 03.01.2017, 12:22 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
cerber412,

Не уложится задача в VBA. Исходя из примера, мультимедийные файлы не блокируются при воспроизведении, то есть просто проверить не использует ли кто этот файл, не получится. Также как и получить из процессов, не ипользует ли один из них искомый файл, тоже не просто, если возможно ваще.

Можно схитрить, и открывать файлы не с "локального диска", а по сети (\\localhost\c$\1\1.mp3), тогда можно получить список файлов , ну и обработать его, правда при этом надо иметь привелегии администратора. Пример вывода списка открытых ресурсов [vba]
Код
Set objConnection = GetObject("WinNT://localhost/LanmanServer")
Set colResources = objConnection.Resources
For Each objResource In colResources
    debug.print objResource = objResource.Path
Next
[/vba]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеcerber412,

Не уложится задача в VBA. Исходя из примера, мультимедийные файлы не блокируются при воспроизведении, то есть просто проверить не использует ли кто этот файл, не получится. Также как и получить из процессов, не ипользует ли один из них искомый файл, тоже не просто, если возможно ваще.

Можно схитрить, и открывать файлы не с "локального диска", а по сети (\\localhost\c$\1\1.mp3), тогда можно получить список файлов , ну и обработать его, правда при этом надо иметь привелегии администратора. Пример вывода списка открытых ресурсов [vba]
Код
Set objConnection = GetObject("WinNT://localhost/LanmanServer")
Set colResources = objConnection.Resources
For Each objResource In colResources
    debug.print objResource = objResource.Path
Next
[/vba]

Автор - bmv98rus
Дата добавления - 03.01.2017 в 12:22
SLAVICK Дата: Вторник, 03.01.2017, 12:26 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Не уложится задача в VBA

Готов поспорить :D

Так пойдет? (ниже только управляющий макрос)
[vba]
Код
Public Sub Processe()
    Set d = CreateObject("scripting.Dictionary")
    winOutputType.winHandleClassTitle = 5
    GetWinInfo 0&, 0, winOutputType.winHandleClassTitle
    
' Чтобы увидеть список процессов
[a5].Resize(d.Count) = Application.Transpose(d.keys)
[b5].Resize(d.Count) = Application.Transpose(d.items)

'Проверка на наличие процесса в списке:
If InStr(1, Join(d.items, vbLf), "Сюда то что ищем", vbTextCompare) = 0 Then
'If InStr(1, Join(d.items, vbLf), "Барс", vbTextCompare) = 0 Then
    PlayMP3
    MsgBox "Done"
Else
    MsgBox "File is already running"
End If
End Sub
[/vba]
как работать:
Запускаем файл
На листе 1 в ячейку А1 - пишем полный путь.
Запускаем макрос Processe - Он запустит файл, и выгрузит список всех процессов на лист
Потом находим нужное имя в столбце В - и вставляем его вместо фразы Сюда то что ищем.
Сохраняем файл
Все

ЗЫ
После этого строки:
[vba]
Код
[a5].Resize(d.Count) = Application.Transpose(d.keys)
[b5].Resize(d.Count) = Application.Transpose(d.items)
[/vba]
Можно удалить, чтоб не тормозить процесс открытия файла.
Взял запуск МП3 тут, список процессов тут.
К сообщению приложен файл: 3513498.xlsm (25.6 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Не уложится задача в VBA

Готов поспорить :D

Так пойдет? (ниже только управляющий макрос)
[vba]
Код
Public Sub Processe()
    Set d = CreateObject("scripting.Dictionary")
    winOutputType.winHandleClassTitle = 5
    GetWinInfo 0&, 0, winOutputType.winHandleClassTitle
    
' Чтобы увидеть список процессов
[a5].Resize(d.Count) = Application.Transpose(d.keys)
[b5].Resize(d.Count) = Application.Transpose(d.items)

'Проверка на наличие процесса в списке:
If InStr(1, Join(d.items, vbLf), "Сюда то что ищем", vbTextCompare) = 0 Then
'If InStr(1, Join(d.items, vbLf), "Барс", vbTextCompare) = 0 Then
    PlayMP3
    MsgBox "Done"
Else
    MsgBox "File is already running"
End If
End Sub
[/vba]
как работать:
Запускаем файл
На листе 1 в ячейку А1 - пишем полный путь.
Запускаем макрос Processe - Он запустит файл, и выгрузит список всех процессов на лист
Потом находим нужное имя в столбце В - и вставляем его вместо фразы Сюда то что ищем.
Сохраняем файл
Все

ЗЫ
После этого строки:
[vba]
Код
[a5].Resize(d.Count) = Application.Transpose(d.keys)
[b5].Resize(d.Count) = Application.Transpose(d.items)
[/vba]
Можно удалить, чтоб не тормозить процесс открытия файла.
Взял запуск МП3 тут, список процессов тут.

Автор - SLAVICK
Дата добавления - 03.01.2017 в 12:26
bmv98rus Дата: Вторник, 03.01.2017, 12:48 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
SLAVICK,

Спорить не буду, но или я не понял задачу и усложнил, или в вашем исполнении она не до конца выполнена.
(не в эксель, а в любой сторонней программе) если он еще не запущен?


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеSLAVICK,

Спорить не буду, но или я не понял задачу и усложнил, или в вашем исполнении она не до конца выполнена.
(не в эксель, а в любой сторонней программе) если он еще не запущен?

Автор - bmv98rus
Дата добавления - 03.01.2017 в 12:48
SLAVICK Дата: Вторник, 03.01.2017, 12:56 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
(не в эксель, а в любой сторонней программе) если он еще не запущен?

Так Вы сначала попробуйте - потом пишите ;) .
Проверяется название всех процессов не только книг. А Excel - запускает файл в программе по умолчанию, например у меня VLC. Смотрится название окна, любого процесса.


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
(не в эксель, а в любой сторонней программе) если он еще не запущен?

Так Вы сначала попробуйте - потом пишите ;) .
Проверяется название всех процессов не только книг. А Excel - запускает файл в программе по умолчанию, например у меня VLC. Смотрится название окна, любого процесса.

Автор - SLAVICK
Дата добавления - 03.01.2017 в 12:56
bmv98rus Дата: Вторник, 03.01.2017, 13:21 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Так с процессами и у мегя проблем нет. WMI выдает, но вот то какой файл исполняется, я не увидел ни у себя ни у вас. Может не внимательно смотрел тогда прошу простить.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеТак с процессами и у мегя проблем нет. WMI выдает, но вот то какой файл исполняется, я не увидел ни у себя ни у вас. Может не внимательно смотрел тогда прошу простить.

Автор - bmv98rus
Дата добавления - 03.01.2017 в 13:21
cerber412 Дата: Вторник, 03.01.2017, 14:35 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
SLAVICK, посмотрел ваш файл.
Ох и хитроумный же код вы написали....

Вроде все работает как надо.
Огромное спасибо.
 
Ответить
СообщениеSLAVICK, посмотрел ваш файл.
Ох и хитроумный же код вы написали....

Вроде все работает как надо.
Огромное спасибо.

Автор - cerber412
Дата добавления - 03.01.2017 в 14:35
SLAVICK Дата: Вторник, 03.01.2017, 15:24 | Сообщение № 10
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
но вот то какой файл исполняется, я не увидел ни у себя ни у вас

а я увидел.
фишка в том что у меня в коде - считывается название окна.
Так вот файл назван ссс.mp3
а на самом деле отображается (к примеру) БАРС .... туманы... - разницу улавливаете?


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
но вот то какой файл исполняется, я не увидел ни у себя ни у вас

а я увидел.
фишка в том что у меня в коде - считывается название окна.
Так вот файл назван ссс.mp3
а на самом деле отображается (к примеру) БАРС .... туманы... - разницу улавливаете?

Автор - SLAVICK
Дата добавления - 03.01.2017 в 15:24
bmv98rus Дата: Вторник, 03.01.2017, 16:44 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
SLAVICK,

За идею. 5, за универсальность оценку снижаю :-). Не все проигрывателм показывают то что играют. на 10ке по умолчанию Groove Music и он ничего не кажет. Вот я ничего и не увидел касательно файла.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 03.01.2017, 22:48
 
Ответить
СообщениеSLAVICK,

За идею. 5, за универсальность оценку снижаю :-). Не все проигрывателм показывают то что играют. на 10ке по умолчанию Groove Music и он ничего не кажет. Вот я ничего и не увидел касательно файла.

Автор - bmv98rus
Дата добавления - 03.01.2017 в 16:44
SLAVICK Дата: Вторник, 03.01.2017, 21:55 | Сообщение № 12
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Не все проигрывателм показывают то что играют. на 10ке по умолчанию Groove Music


Ну у мну - скромная 7-ка...
значить в топку этот Groove Music и тому подобные - пользуйтесь нормальными прогами :D .


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Не все проигрывателм показывают то что играют. на 10ке по умолчанию Groove Music


Ну у мну - скромная 7-ка...
значить в топку этот Groove Music и тому подобные - пользуйтесь нормальными прогами :D .

Автор - SLAVICK
Дата добавления - 03.01.2017 в 21:55
bmv98rus Дата: Вторник, 03.01.2017, 22:52 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
SLAVICK,

Ну да, это неправильные пчелы, они несут неправильный мед :-)

Если cerber412 удовлетворен, то я просто предупредил, что метод не всегда сработает, но возможно в их условиях все ок и сейчас и в дальнейшем. Разве что тема скорее к вопросам по VBA.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеSLAVICK,

Ну да, это неправильные пчелы, они несут неправильный мед :-)

Если cerber412 удовлетворен, то я просто предупредил, что метод не всегда сработает, но возможно в их условиях все ок и сейчас и в дальнейшем. Разве что тема скорее к вопросам по VBA.

Автор - bmv98rus
Дата добавления - 03.01.2017 в 22:52
  • Страница 1 из 1
  • 1
Поиск:

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