Страница 1 из 2

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

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

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

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

Заранее благодарен.

Добавлено: 21 сен 2005, 08:39
treider
Попробуй так

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

Sub start(command As String)
Set WshScript = CreateObject("WScript.Shell")
 D = WshScript.Run(command, 4, False)
End Sub

Добавлено: 21 сен 2005, 08:53
Sokl
СПАСИБО! Отлично!

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

Спасибо.

Добавлено: 21 сен 2005, 09:07
treider
Очень много разного всякого по VBA и VBS есть в MSDN
http://msdn.microsoft.com/library/defau ... Script.asp
У всех этих объктов есть один существенный не достаток: список свойств и методов меняется в зависимости от версии Windows, IE и.пр поэтому тестировать надо на самой нижней версии какая только есть

Добавлено: 21 сен 2005, 10:28
Avsha
Кстати, работают и эти варианты:

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

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

Только абсолютный путь к приложениям Excel и другим не всегда одинаковый на всех машинах,
Может использовать переменные среды Windows?

Добавлено: 21 сен 2005, 11:04
Sokl
treider, спасибо!!!

Avsha, да, я знаю...

Добавлено: 26 сен 2005, 06:18
Avsha
Подскажите, можно ли
и как обратиться к переменным среды Windows?

Например: %SystemRoot%="C:\WINNT"

Добавлено: 26 сен 2005, 07:28
treider
Если нужно получить только имя католога

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

Set f = CreateObject("Scripting.FileSystemObject")
 MsgBox (f.GetSpecialFolder(SystemRoot))

Добавлено: 26 сен 2005, 07:44
treider
А, что касаемо переменных окружения

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

Sub ShowPath()
MsgBox (Environ("path"))
end sub

Добавлено: 26 сен 2005, 08:37
Avsha
Спасибо treider, ... полностью исчерпывающий ответ.

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