Открытие файлов с помощью пути к файлу Excel-VBA

Можно ли открыть все типы файлов из excel vba, указав только путь к файлу? Прямо сейчас я могу открывать книги с помощью простого:

Workbooks.Open myDestFilePath 

но что, если myDestFilePath действительно является файлом .pptx или чем-то еще?


person thebiglebowski11    schedule 07.03.2012    source источник
comment
Вы можете использовать Shell(), чтобы открыть любой документ в его приложении по умолчанию (при условии, что для такого типа файла существует существующая ассоциация типа файла).   -  person Tim Williams    schedule 08.03.2012
comment
erlandsendata.no/english/index.php?d=envbafoldersfileopen или support.microsoft.com/kb/170918   -  person Tim Williams    schedule 08.03.2012


Ответы (3)


Вы можете использовать Excel VBA для автоматизации других приложений, но вам нужно использовать правильный объект приложения для этой задачи. Если вы пытаетесь открыть файлы PowerPoint, для этого вам потребуется использовать PowerPoint. Вот грубый пример:

'remember to add the powerpoint object library (Tools->References)
Sub OpenPPTFile()
    Dim pptApp As PowerPoint.Application
    Dim pptPres As PowerPoint.Presentation

    Set pptApp = New PowerPoint.Application

    Set pptPres = pptApp.Presentations.Open("filename.pptx")

    'here you can add code to have powerpoint do all kinds of nifty things to your file

    pptPres.Close

    pptApp.Quit

    Set pptPres = Nothing
    Set pptApp = Nothing
End Sub

Итак, если ваш вопрос «Могу ли я использовать Excel для открытия файлов, созданных другими приложениями», короткий ответ — нет. Однако, если возникает вопрос «Могу ли я использовать Excel VBA для автоматизации других приложений для выполнения операций с файлами, отличными от Excel?» ответ да.

person hexboy    schedule 07.03.2012
comment
Ну, файл pptx уже создан... Я просто хочу открыть его после того, как пользователь введет информацию... Затем я нахожу путь к файлу. Когда у меня есть путь к файлу, я хочу открыть документ, который находится в этом месте. - person thebiglebowski11; 08.03.2012
comment
Я мог бы открыть что-то другое, кроме PowerPoint, возможно, документ Word или какой-либо другой документ программного обеспечения САПР. - person thebiglebowski11; 08.03.2012
comment
Вообще говоря, вы будете ограничены документами Office, если будете делать это из VBA (если только для этого конкретного приложения вам не предоставлена ​​библиотека автоматизации VBA). Могу я спросить, что вы будете делать с файлами, как только откроете их? - person hexboy; 08.03.2012
comment
хорошо, у меня есть файлы, сохраненные в месте, и их пути сохранены в базе данных доступа ... Как только они открываются, они просто открываются, а затем вы закрываете их, вы возвращаетесь к исходному инструменту. - person thebiglebowski11; 08.03.2012

Использовать внутренние вызовы без API. я не нашла много такого

ThisWorkbook.FollowHyperlink "FilePath"

Не открывается

Например:

ThisWorkbook.FollowHyperlink  "D:\My documents\Movie.mov"
person SWa    schedule 08.03.2012

Вы можете использовать функцию ShellExecute VB. Просто объявите заголовок API, и вы можете напрямую «вызвать» файл, чтобы открыть его в соответствующем приложении. Вот пример кода:

http://www.tomasvasquez.com.br/blog/microsoft-office/usando-a-funcao-shellexecute-no-vba

Извините за ссылку, но я пишу этот ответ со своего iPad, и здесь ужасно форматировать код. :(

person Tomamais    schedule 08.03.2012