Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2013, 15:23   #1
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию Не срабатывает макрос запуска программы

Всем доброго времени суток. Товарищи программеры, столкнулся с проблеммой и не знаю в чем дело.

Проблеммы с макросом запуска программы *.exe
запускаю таким образом:
Код:
Sub Запуск_Saprks3()

ChDir ThisWorkbook.Path
Shell ThisWorkbook.Path & "\saprks3.exe"

End Sub
Проблемма в том, что на некоторых компьютерах запускается программа таким образом, а на некоторых нет. При этом ни какой ошибки не выдается.
подскажите пожалуйста в чем дело и как можно исправить это.
Заранее спасибо
Nicolas_46 вне форума Ответить с цитированием
Старый 13.02.2013, 15:28   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Попробуйте ещё ChDrive в начало поставить:

Код:
ChDrive ThisWorkbook.Path
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 13.02.2013, 15:39   #3
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

Все срабатывает, а почему с ChDir не работало? На любой машине запустится, как считаете?
Nicolas_46 вне форума Ответить с цитированием
Старый 13.02.2013, 16:45   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Чем больше я знаком с компьютерами - тем меньше я в них уверен...
Может быть всё что угодно...
Хотя в данном случае думаю код идеален (с ChDrive)
Ну разве что Application.PathSeparator может жизнь подпортить... Теоретически. Хотя может и в этом проблема, что "на некоторых не запускается". Правда я не уверен - там тоже *.exe?
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 13.02.2013 в 16:56.
Hugo121 вне форума Ответить с цитированием
Старый 13.02.2013, 21:20   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Проблема в том, что на некоторых компьютерах запускается программа таким образом, а на некоторых нет
Проблема в том, что на некоторых компах путь к текущему файлу содержит пробелы, а на некоторых - нет.

Попробуйте так:

Код:
Shell chr(34) & ThisWorkbook.Path & "\saprks3.exe" & chr(34)
EducatedFool вне форума Ответить с цитированием
Старый 13.02.2013, 21:48   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
на некоторых компах путь к текущему файлу содержит пробелы
а вот это мысль! и вся это строка разделяется на команду и аргументы, и выясняется, что такой команды.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 14.02.2013, 07:47   #7
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Nicolas_46, зачем в этом коде:
Код:
Sub Запуск_Saprks3()

    ChDir ThisWorkbook.Path
    Shell ThisWorkbook.Path & "\saprks3.exe"

End Sub
Нужна команда "ChDir"?


Цитата из VBA-справочника:
ChDir - это команда, которая изменяет текущую папку.
Текущая папка - это папка, которую Excel или другая программа использует, если не указана определённая папка.


Nicolas_46, вы же указываете определённую папку в этой команде:
Код:
Shell ThisWorkbook.Path & "\saprks3.exe"
В этой команде определённая папка "ThisWorkbook.Path". "ThisWorkbook.Path" - это путь, где находится Excel-книга и этот путь ничем нельзя изменить, кроме как переместить Excel-книгу в другое место.

Использование команды ChDir имело бы смысл в вашем случае, если бы вы вот так писали код (я только пример кода написал, нужно ещё уточнять в этом коде текущий диск):
Код:
Sub Запуск_Saprks3()

    ChDir ThisWorkbook.Path
    Shell CurDir & "\saprks3.exe"

End Sub

Последний раз редактировалось Скрипт; 14.02.2013 в 08:22.
Скрипт вне форума Ответить с цитированием
Старый 15.02.2013, 14:48   #8
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

Благодарю за советы. Пока работает на всех машинах на которых пробовал. Конечный вариан выбрал такой такой:

Код:
Sub Вызов()
ChDrive ThisWorkbook.Path
Shell Chr(34) & ThisWorkbook.Path & "\saprks3.exe" & Chr(34)
End Sub
Еще такой вопрос созрел:

В макросе, по ходу выполнения действия, запускается другой макрос.
запуск выполняется вот такой строкой:
Код:
Call Лист4.Блок_2
запуск происходит но макрос выполняется не корректно, а если в ручную запустить его, то все нормально. Почему так происходит, подскожите пожалуйста.
Nicolas_46 вне форума Ответить с цитированием
Старый 15.02.2013, 14:54   #9
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Nicolas_46, удалите эту строку, т.к. в вашем коде эта строка ничего не делает, связанное с вашей задачей:
Код:
ChDrive ThisWorkbook.Path
Скрипт вне форума Ответить с цитированием
Старый 15.02.2013, 14:59   #10
Nicolas_46
Пользователь
 
Регистрация: 13.09.2012
Сообщений: 53
По умолчанию

ок, так тоже заработало. До этого не срабатывало почему-то.

Последний раз редактировалось Nicolas_46; 15.02.2013 в 15:06.
Nicolas_46 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время запуска программы Larboss Общие вопросы Delphi 5 06.01.2012 23:44
Кнопка запуска программы Vitalya_1993 Помощь студентам 1 14.12.2011 10:48
макрос для запуска ряда других макросов caute Microsoft Office Word 4 19.09.2011 14:12
Логирование запуска программы Dima DDM Общие вопросы Delphi 0 05.08.2011 15:48
Не срабатывает макрос... Busine2009 Фриланс 6 14.08.2009 10:14