Страницы: 1
RSS
Открытие файла с расширением (.pln), Макрос филонит!
 
Пробовал несколько макросов вроде этого:
Код
Sub CAD ()     
    Programm = "c:\CAD.exe" 
    File = "c:\Имя файла.pln" 
    Shell Programm & " " & Files, vbNormalFocus 
End Sub 

Программа запускается без проблем но файл не открывается.
Возможен ли более надежный код?
Если да, то желательно без указания адресов программы и файла. Файл.pln всегда находится в одной папке с активной книгой.
Заранее благодарю!
 
Если файл ассоциирован с приложением, то его можно открывать не указывая exe-файл используя API:
Код
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub OpenFile()
    ShellExecute 0&, vbNullString, "c:\Имя файла.pln", vbNullString, vbNullString, vbNormalFocus
End Sub
Изменено: SAS888 - 25.07.2014 03:59:24
Чем шире угол зрения, тем он тупее.
 
Почему-то первые две строки красные. Ругается на "Function"
 
Посмотрите пример во вложении.
Чем шире угол зрения, тем он тупее.
 
Извините конечно, если я что-то не знаю, но что это за программа CAD.exe? и умеет ли она работать с командной строкой?
Учимся сами и помогаем другим...
 
А не надо ли в кавычки пути к файлам забирать? Особенно, если в пути присутствуют пробелы...
Код
Sub CAD()
    Dim Programm As String, files As String
    Programm = "c:\CAD.exe"
    files = "c:\Имя файла.pln"
    Shell """" & Programm & """ """ & files & """", vbNormalFocus
End Sub
Плюс очень понравилось то, что значение присваиваете переменной Files, а в Shell подставляете File :-)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
SAS888, Просит переписать  win 8.1)
 
 
ber$erk,Самый обычный Архикад
 
The_Prist, Код просто скопирован с нета. С другими расширениями работает
Код
Sub PDFOpen()
            'Открываем программу, которая открывает документ
            Programm = "c:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe"
            
            'Указываем адрес файла
            Files = "c:\jrc4558.pdf"
            
            'Открываем Файл
            Shell Programm & " " & Files, vbNormalFocus
        End Sub 
Изменено: zotov - 25.07.2014 12:10:09
 
я к тому что, не могу понять, это для всех программ по умолчанию? когда через командную строку запускаешь программу и через пробел имя файла? или все таки в самой программе должна обрабатываться такая ситуация? а вдруг надо какой-нибудь ключ указывать для открытия файла через консоль?
Учимся сами и помогаем другим...
 
ber$erk, Для меня эта тема - темный лес
 
в нете по архикаду я так и не смог понять - есть у него ключи или нет?
Учимся сами и помогаем другим...
 
Цитата
zotov пишет:
Код просто скопирован с нета. С другими расширениями работает
Вы мой совет попробовали или нет? Не все то работает везде, что в нете написано :-)
Как правило для командной строки при вызове из Shell пробелы являются проблемой, если пути к программе и файлам в кавычки не заключать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Пробовал. Кавычки успешно облаяны

Прошу прощения за невнимательность. Со второй попытки файл открылся. Спасибо за совет!
А как на счет того, что бы каждый раз не прописывать путь файла?
Изменено: zotov - 25.07.2014 18:54:58
 
Цитата
zotov пишет:
каждый раз не прописывать путь файла
то ли каждый раз откуда-то его брать в переменную files, то ли добавить его к пути программы (с соблюдением необходимых кавычек)
F1 творит чудеса
 
Цитата
Максим Зеленский пишет:
то ли каждый раз откуда-то его брать в переменную files, то ли добавить его к пути программы (с соблюдением необходимых кавычек)
Изучить бы ваше предложение на конкретных примерах...
 
Пока ждал варианты, слепил вот это:
Код
Sub CAD()
    Dim Programm As String, files As String
    Programm = "Путь\.EXE"
    files = ThisWorkbook.Path & Application.PathSeparator & i & "Файл.pln"
    Shell """" & Programm & """ """ & files & """", vbNormalFocus
End Sub

Вроде работает. Проверьте пожалуйста правильность четвертой строчки. С третьей строкой пока туплю...
Изменено: zotov - 25.07.2014 22:25:03
 
ещё вариант

лучше использовать вместо Shell следующее:
Код
CreateObject("wscript.shell").run 
Почему - сказать затрудняюсь
по функционалу одно и то же, но как-то однажды (не помню что запускал) SHELL у меня не сработал, а "wscript.shell" - отработал

PS: Если вручную, двойным щелчком, у вас файл PLN корректно открывается, - то в макросе не надо указывать путь к приложению (только путь к файлу PLN)

Например:
Код
filename$ = ThisWorkbook.Path & "\Файл.pln"    
CreateObject("wscript.shell").run """" & filename$ & """"
Изменено: Игорь - 26.07.2014 01:18:15
 
Игорь, Спасибо! Наверное это лучшее решение. О большем уже никак не мечтается
Страницы: 1
Читают тему
Наверх