Запуск программ и открытие документов из VBA

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Sokl
Сообщения: 451
Зарегистрирован: 12 сен 2005, 08:52
Откуда: ОМ

Необходимо из VBA, зная путь и имя файла, запускать программы (*.exe) и :shock: открывать документы (например, *.psd; *.doc; *.txt, то есть как в проводнике, для зарегисрированных типов файлов автоматичеки запускать их приложение, в котором открывать документ)!

Shell(PathName) - Не помогает (для документов не работает).

Есть способ? (Сейчас работаю с VBA.Excel, и VBA.Project)

Заранее благодарен.
treider
Сообщения: 57
Зарегистрирован: 01 сен 2005, 13:29
Откуда: Алматы
Контактная информация:

Попробуй так

Код: Выделить всё

Sub start(command As String)
Set WshScript = CreateObject("WScript.Shell")
 D = WshScript.Run(command, 4, False)
End Sub
Sokl
Сообщения: 451
Зарегистрирован: 12 сен 2005, 08:52
Откуда: ОМ

СПАСИБО! Отлично!

Уже несколько раз мне попадался на глаза "WScript.Shell"... Вы можете дать ссылку на материалы по этому ".Shell" или какие-то примеры? (Treider, у меня есть Ваш еАдрес, а у Вас мой, если не затруднит...)

Спасибо.
treider
Сообщения: 57
Зарегистрирован: 01 сен 2005, 13:29
Откуда: Алматы
Контактная информация:

Очень много разного всякого по VBA и VBS есть в MSDN
http://msdn.microsoft.com/library/defau ... Script.asp
У всех этих объктов есть один существенный не достаток: список свойств и методов меняется в зависимости от версии Windows, IE и.пр поэтому тестировать надо на самой нижней версии какая только есть
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Кстати, работают и эти варианты:

Shell "C:\Program Files\Microsoft Office\Office\EXCEL.EXE " + _
"C:\Книга1.xls", 1

Shell "C:\WINNT\NOTEPAD.EXE Файл.txt", vbNormalFocus

Только абсолютный путь к приложениям Excel и другим не всегда одинаковый на всех машинах,
Может использовать переменные среды Windows?
Sokl
Сообщения: 451
Зарегистрирован: 12 сен 2005, 08:52
Откуда: ОМ

treider, спасибо!!!

Avsha, да, я знаю...
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Подскажите, можно ли
и как обратиться к переменным среды Windows?

Например: %SystemRoot%="C:\WINNT"
treider
Сообщения: 57
Зарегистрирован: 01 сен 2005, 13:29
Откуда: Алматы
Контактная информация:

Если нужно получить только имя католога

Код: Выделить всё

Set f = CreateObject("Scripting.FileSystemObject")
 MsgBox (f.GetSpecialFolder(SystemRoot))
treider
Сообщения: 57
Зарегистрирован: 01 сен 2005, 13:29
Откуда: Алматы
Контактная информация:

А, что касаемо переменных окружения

Код: Выделить всё

Sub ShowPath()
MsgBox (Environ("path"))
end sub
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Спасибо treider, ... полностью исчерпывающий ответ.

И еще вопрос,
Как получить в программе имя папки, из которой запускается скомпилированный файл .exe?
Напримeр запускаем C:\Sample\programm.exe
Надо получить MyPath="C:\Sample"
Ответить