C# 응용 프로그램에서 버튼을 클릭하여 새 Excel 프로세스를 열 수 있습니다. 그런 다음 입력 대기를 기다리고 새 Excel 파일을로드합니다. 문서를로드하기 전에 모든 매크로와 도구를로드해야하기 때문에이 작업을 수행해야합니다 (그렇지 않으면 렌더링 버그가 있음).Excel 프로세스를로드하고 문서를 닫을 때 전체 프로세스 닫기
내가 그 버튼을 다시 클릭하면 프로세스 ID는 프로세스가 이미 존재하는 경우, 프로세스는 달리, 새로운 프로세스가 생성, 포커스가의 PID와, var에 저장되고 :
Process processExcel = null;
if (pId_m.HasValue)
{
try
{
processExcel = Process.GetProcessById(pId_m.Value);
}
catch (Exception ex)
{
Log.MonitoringLogger.Error("Unable to find Pid : " + pId_m,ex);
}
}
if (processExcel != null && (processExcel.HasExited == false))
{
AutomationElement element = AutomationElement.FromHandle(processExcel.MainWindowHandle);
if (element != null)
{
element.SetFocus();
}
}
else
{
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "Excel.exe";
info.Arguments = " /e ";
processExcel_l = Process.Start(info);
pId_m = processExcel_l.Id;
processExcel_l.WaitForInputIdle();
processExcel_l.StartInfo = new ProcessStartInfo(path);
processExcel_l.Start();
}
문제는 다음과 같습니다. Excel 문서 창이 닫히고 Excel 창을 닫을 때 단추를 클릭하면 Excel 프로세스에 포커스가 설정되지만 문서는 표시되지 않습니다 ... 이 동작은 논리입니다 ,하지만 내가 원하는 것을 위해 작동하지 않습니다 ...
새로운 프로세스와 새 문서를 내부에로드하는 소프트웨어를 보았습니다. 문서 닫기 버튼을 클릭하면 전체 프로세스가 종료되었습니다 ... 어떻게 재현 할 수 있습니까?
편집 : 좋아,
마지막으로 대신하는 과정에 초점을 설정, 나는 (파일이 이미 열려 있으면 초점 설정)이 과정에서 파일을 시작했다.
그것은 내가 정말하고 싶었던 게 아니에요,하지만 내 문제를 해결 ... 당신의 응용 프로그램을 종료 한 다음 닫기를 엑셀 프로세스
COM을 알고 있지만 COM을 통해 사용자에게 새 프로세스의 Excel 창을 표시 할 수 없다고 생각합니다. 사용자에게 Excel 창을 표시하지 않고 Excel의 데이터 만 사용할 수 있다고 생각합니다. – metalcam