Открытие файла другой программы из кода VBA Excel с помощью функции ShellExecute, методов Wscript.Shell.Run и Workbook.FollowHyperlink по ассоциации с его расширением.
Функция ShellExecute
Функция ShellExecute позволяет открывать файлы других приложений из кода VBA Excel по ассоциации с их расширениями. Если файл не имеет расширения, или оно ассоциируется с «Неизвестным приложением», будет отображено диалоговое окно для ручного выбора программы, с помощью которой можно открыть этот файл:
Или не произойдет ничего.
Чтобы открыть файл другой программы с помощью функции ShellExecute, ее необходимо объявить в разделе Declarations того модуля, в котором она будет использоваться.
Разместите следующий код в раздел Declarations программного модуля:
1 |
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 |
Открывайте файлы сторонних приложений из кода VBA Excel с помощью следующей строки:
1 |
ShellExecute 0, vbNullString, "C:\Тестовая\Справка VBA Excel.doc", vbNullString, vbNullString, vbNormalFocus |
Замените адрес файла «C:\Тестовая\Справка VBA Excel.doc» на адрес своего файла, который необходимо открыть по ассоциации с его расширением.
Минус этого способа заключается в необходимости объявлять функцию ShellExecute в разделе Declarations каждого модуля, где планируется ее использование.
Метод Run объекта Wscript.Shell
Метод Wscript.Shell.Run также позволяет открывать файлы других приложений из кода VBA Excel по ассоциации с их расширениями. Но если открываемый объект не существует, будет сгенерирована ошибка.
Используйте следующий код VBA Excel, чтобы открыть файл другой программы с помощью метода Run объекта Wscript.Shell:
1 2 3 4 5 6 |
Sub Primer1() Dim ws As Object Set ws = CreateObject("WScript.Shell") ws.Run "C:\Тестовая\123.png" Set ws = Nothing End Sub |
Если адрес будет содержать пробелы, произойдет следующая ошибка:
Чтобы избежать ошибки, необходимо использовать тройные кавычки:
1 2 3 4 5 6 |
Sub Primer2() Dim ws As Object Set ws = CreateObject("WScript.Shell") ws.Run """C:\Тестовая папка\Новый точечный рисунок.bmp""" Set ws = Nothing End Sub |
Метод Workbook.FollowHyperlink
Метод Workbook.FollowHyperlink позволяет открыть файл другой программы с помощью всего одной строки кода VBA Excel. Кроме того, при использовании этого метода не нужно экранировать кавычками полные имена файлов с пробелами.
Используйте следующую строку для открытия файлов других программ по их расширению с помощью метода FollowHyperlink объекта Workbook:
1 |
ThisWorkbook.FollowHyperlink ("C:\Тестовая папка\Новый точечный рисунок.bmp") |
Если открываемый объект не существует, будет сгенерирована ошибка, как и в случае с методом Wscript.Shell.Run.
Все представленные здесь способы открытия файлов можно использовать для открытия папок в проводнике Windows и открытия сайтов в браузере по умолчанию.
Обожаю данный сайт! Спасибо за всё!
Обсуждение закрыто.