이 사무실에 대한 C# .NET 엑셀 Interop를 자동화의 모든입니다하나의 Excel 시트에서 다른 Excel 시트로 변경 사항을 어떻게 복제합니까?
2007은 두 개의 앱을 능가하고 각 응용 프로그램에 대해 동일한 통합 문서를 열 생성 말 : 나는 모든 변경 사항을 복제 할 지금
app = new Excel.ApplicationClass();
app2 = new Excel.ApplicationClass();
string fileLocation = "myBook.xslx";
workbook = app.Workbooks.Open(fileLocation,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workbook2 = app2.Workbooks.Open(fileLocation,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
통합 문서에 통합 문서 2에서 발생합니다. 셀 변경을 캡처하기 위해 SheetChanged 이벤트를 연결할 수 있다고 생각했습니다.
app.SheetChange += new Microsoft.Office.Interop.Excel.AppEvents_SheetChangeEventHandler(app_SheetChange);
void app_SheetChange(object Sh, Microsoft.Office.Interop.Excel.Range Target)
{
Excel.Worksheet sheetReadOnly = (Excel.Worksheet)Sh;
string changedRange = Target.get_Address(missing, missing,
Excel.XlReferenceStyle.xlA1, missing, missing);
Console.WriteLine("The value of " + sheetReadOnly.Name + ":" +
changedRange + " was changed to = " + Target.Value2);
Excel.Worksheet sheet = workbook.Worksheets[sheetReadOnly.Index] as Excel.Worksheet;
Excel.Range range = sheet.get_Range(changedRange, missing);
range.Value2 = Target.Value2;
}
계산 변경 내용을 어떻게 캡처합니까? 나는 calculate 이벤트에 연결할 수 있지만 통과 된 유일한 것은 시트이며 업데이트 된 셀은 아닙니다. app.Calculate() 또는 app.CalculateFullRebuild()를 강제 실행했지만 다른 응용 프로그램에서 아무것도 업데이트하지 않았습니다. 수식이 변경되면 변경 이벤트가 발생하지 않습니다 (예 : 슬라이더 컨트롤이 SheetCalculate 이벤트를 발생시키고 SheetChange 이벤트가 발생하지 않음)
업데이트 된 수식을 볼 수있는 방법이 있습니까? 또는 두 개의 통합 문서를 프로그래밍 방식으로 실시간으로 동기화하는 더 쉬운 방법이 있습니까?
나는 이것을 대답으로 할 것이다. Microsoft는 개발자가 응용 프로그램을 제어 할 수 있기를 바라지 않습니다. 미래에는 가능하지만 현재로서는 그렇지 않습니다. 감사합니다 StevenzNPaul – incognick