КАК закрыть экземпляр Excel, запущенный слиянием почты - PullRequest
1 голос
/ 17 сентября 2009

КАК закрыть экземпляр Excel, запущенный слиянием почты

этот код, работающий внутри модуля запуска, не имеет доступа к Excel, работающему через DDE ??

'For i = 1 To Workbooks.Count
'   MsgBox ("here" + Workbooks(i).Name)
'If (Workbooks(i).Name <> ActiveWorkbook.Name) Then
'Workbooks(i).Close
'End If
'Next i

Ответы [ 2 ]

0 голосов
/ 17 сентября 2009

Excel может быть закрыт через VBA, если вызывается из Excel

Application.Quit

При вызове из-за пределов Excel вам нужно будет установить ссылку на Excel, а затем закрыть ее.

Set appExcel = GetObject(, "Excel.Application")
appExcel.Quit

Необходимо убедиться, что все рабочие книги закрыты или сохранены, в противном случае Excel предложит пользователю сохранить.

0 голосов
/ 17 сентября 2009

Вы можете убить процесс Excel следующим образом: (от http://www.dreamincode.net/code/snippet1543.htm)

//Namespaces needed
using System.Diagnostics;

public bool FindAndKillProcess(string name)
{
    //here we're going to get a list of all running processes on
    //the computer
    foreach (Process clsProcess in Process.GetProcesses()) {
        //now we're going to see if any of the running processes
        //match the currently running processes by using the StartsWith Method,
        //this prevents us from incluing the .EXE for the process we're looking for.
        //. Be sure to not
        //add the .exe to the name you provide, i.e: NOTEPAD,
        //not NOTEPAD.EXE or false is always returned even if
        //notepad is running
        if (clsProcess.ProcessName.StartsWith(name))
        {
            //since we found the proccess we now need to use the
            //Kill Method to kill the process. Remember, if you have
            //the process running more than once, say IE open 4
            //times the loop thr way it is now will close all 4,
            //if you want it to just close the first one it finds
            //then add a return; after the Kill
            clsProcess.Kill();
            //process killed, return true
            return true;
        }
    }
    //process not found, return false
    return false;
}
...