2016-11-25 78 views
1

我有一個問題我無法找到答案。我有一個宏,從.MHTML文件導入數據到我的工作表(使用.MHTML文件是我的不幸的是唯一的選擇。這是來自SAP的出口和在Excel中打開,但沒有文件,因爲文件的擴展名類型識別爲一個Excel )。在宏的末尾,我想要關閉它。它不被識別爲excel工作簿,所以我無法使用簡單的:Workbooks().close命令。VBA - 關閉非Excel文件

有沒有人對如何做到這一點任何想法?提前致謝。

+0

你可以試試這個鏈接:http://www.taltech.com/support/entry/o pening_and_closing_an_application_from_vba ​​ – Limak

+0

謝謝Limak,我認爲正確的修改,它可以工作。從示例中,我將'strTerminateThis =「bc-wedge.exe」'更改爲'strTerminateThis =「SAP_export.MHTML」'。我想如果我將它改爲'strTerminateThis =「EXCEL.exe * 32」',它可以工作,但它也會終止我的宏,因爲它也在EXCEL.exe * 32進程下。你知道如何修改代碼來查看開放的應用程序,而不是隻是打開的進程?謝謝 – jmeddy

+0

爲什麼你想終止''EXCEL.exe * 32「'程序?也許你可以給我提供一些Windows任務管理器的截圖,讓我理解你的擔憂。 – Limak

回答

1

我能找到這個代碼,並更改標題以匹配是在任務管理器中顯示後,它的工作:http://www.vbforums.com/showthread.php?208430-Use-sendmessage-to-close-an-application

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
Private Const WM_CLOSE = &H10 

Sub ExportClose() 
Dim CloseIt As Long 
CloseIt = FindWindow(vbNullString, "Microsoft Excel - SAP_export.MHTML") 
PostMessage CloseIt, WM_CLOSE, CLng(0), CLng(0) 
End Sub 

注:此我的系統的偉大工程,但不是我的同事 。目前想弄清楚爲什麼

0

也許嘗試只是:

Windows("SAP_export.MHTML").Close 
+0

我無法得到這個工作,利馬克,但感謝您的幫助。我能夠找到一種使用API​​的方式 – jmeddy