使用Sub在VBA中打开文件与使用FollowHyperlink

时间:2018-07-10 16:12:18

标签: vba excel-vba

背景知识-我已经使用VBA几个月了,编写了一个程序来加快我的工作速度。这涉及到打开文件,此刻,我已经使用以下子程序通过Autocad打开文件:

Sub OpenAutocadFile(AutocadFile)
If AutocadVariable Is Nothing Then
    Set AutocadVariable = CreateObject("AutoCAD.Application")

    If AutocadVariable Is Nothing Then
        MsgBox "Could not start Autocad"
        Exit Sub
    End If

Else
    Set AutocadVariable = GetObject(, "AutoCAD.Application")

End If

Set AutocadApp = AutocadVariable
AutocadApp.Visible = True
AutocadApp.Documents.Open (AutocadFile)

End sub

我知道这并不完美,但是大多数情况下都可以。

我也一直在使用以下方式打开PDF文件:

ActiveWorkbook.FollowHyperlink(PDFFile)

现在我的问题是,使用一种方法或另一种方法在VBA中打开文件有什么好处?

我已经知道,通过专用子程序,您可以指定要使用的程序,而通过超链接方法,它将使用默认程序。 除此之外,我还缺少什么吗?一个跑得比另一个快吗?一种方法对某些文件类型是否更可取,而另一种方法对其他文件类型更可取?

1 个答案:

答案 0 :(得分:1)

区别在于功能,因为他们做不同的事情以获得相似的结果。

CreateObject方法使用显式应用程序打开引用,而FollowHyperlink使用为该协议注册的默认应用程序,并将引用传递给该协议。

哪个是更可取的取决于开发人员,因为有时您需要用户期望的行为(“在我最喜欢的PDF查看器中打开PDF”),而有时您可能不希望这样做。例如,也许您知道此系统的“打开方式”处理程序没有执行您或用户想要的操作。

一个速度是否比另一个速度实际上并不那么重要,因为它们适用于不同的用例。