メールマージによって開始されたExcelインスタンスを閉じる方法
ランチャー内で実行されているこのコードは、DDEを介して実行されているExcelにアクセスできませんか?
'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
次のように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;
}
Excel内から呼び出された場合、ExcelはVBAを介して閉じることができます
Application.Quit
Excelの外部から呼び出された場合は、Excelへの参照を設定してから閉じる必要があります。
Set appExcel = GetObject(, "Excel.Application")
appExcel.Quit
すべてのブックが閉じているか保存されていることを確認する必要があります。そうしないと、Excelがユーザーに保存を求めるプロンプトを表示します。