使用FollowHyperlink打开后closures打开的PDF

我正在使用FollowHyperlink方法打开一个pdf文件,如下所示:

 Sub Sample() ActiveWorkbook.FollowHyperlink "C:\MyFile.pdf" End Sub 

这是在这个线程find。

我的问题是,如何closurespdf?

这里有两个选项我使用。

选项1:这个选项,我用它来杀死所有打开的互联网浏览器,当他们不可见(又名我搞砸了)。 可以有一种方法来单独的文件这种方式,但我不完全确定没有一个API调用是可能的@Jeeped提到。 我将列出第二个API调用。

找出您正在运行的Adobetypes。 打开Windows任务pipe理器>进程并使用说明Adobe Reader查找.exe。

 Sub Kill_All_PDFs() '***ErrorHandler*** On Error Resume Next '***Define Variables*** Dim objectWMI As Object Dim objectProcess As Object Dim objectProcesses As Object '***Set Objects*** Set objectWMI = GetObject("winmgmts://.") Set objectProcesses = objectWMI.ExecQuery( _ "SELECT * FROM Win32_Process WHERE Name = 'AcroRd32.exe'") '< Change if you need be '***Terminate all Open PDFs*** For Each objectProcess In objectProcesses Call objectProcess.Terminate Next '***Clean Up*** Set objectProcesses = Nothing Set objectWMI = Nothing End Sub 

Option2 API调用方法:

在这里你可以通过标题find你的PDF文件。 我修改了代码来findAdobe,但是如果你想进一步阅读它的工作原理,下面列出了源代码。 只需添加显示在PDF文件顶部的标题即可。

来源: http : //support.microsoft.com/kb/168204

  Private Declare Function FindWindow _ Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) _ As Long Private Declare Function SendMessage _ Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Long) _ As Long Private Sub Close_AdobeReader() Dim lpClassName As String Dim lpCaption As String Dim Handle As Long Const NILL = 0& Const WM_SYSCOMMAND = &H112 Const SC_CLOSE = &HF060& lpClassName = "AcrobatSDIWindow" lpCaption = "egname - Adobe Reader" '< add Title Here '* Determine the handle to the Calculator window. Handle = FindWindow(lpClassName$, lpCaption$) '* Post a message to Calc to end its existence. Handle = SendMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, NILL) End Sub 

希望这可以帮助你的方式!