У меня есть вопрос, на который я не могу найти ответ. У меня есть макрос, который импортирует данные из файла .MHTML в мой рабочий лист (к сожалению, использование файла .MHTML - мой единственный вариант. Это экспорт из SAP, открывается в Excel, но не распознается как файл Excel из-за типа расширения файла .). В конце макроса я бы хотел его закрыть. Он не распознается как книга Excel, поэтому я не могу использовать простую команду: Workbooks().close.

Есть ли у кого-нибудь идеи, как это сделать? Заранее спасибо.

1
jmeddy 25 Ноя 2016 в 22:10

2 ответа

Лучший ответ

Мне удалось найти этот код, и после изменения заголовка в соответствии с тем, что показано в диспетчере задач, он сработал: 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

Примечание. Это отлично работает для моей системы, но не для моего коллеги. Сейчас пытаюсь понять, почему

1
jmeddy 27 Ноя 2016 в 02:00

Может, попробуй просто:

Windows("SAP_export.MHTML").Close
0
Limak 26 Ноя 2016 в 07:23