다음에서는 Excel 워크 시트에 개체 집합을 유지하려고합니다. 함수가 값을 저장하기 위해 호출 될 때마다 A
열의 다음 셀을 할당하여 해당 객체를 저장해야합니다.오류! (C#에서 Excel의 명명 된 범위 사용)
그러나 예외 호출은 get_Range()
에 대한 첫 번째 호출에서 Interop 라이브러리에 의해 throw됩니다. (catch 블록 바로 다음)
내가 뭘 잘못하고 있는지 알아?
private void AddName(string name, object value)
{
Excel.Worksheet jresheet;
try
{
jresheet = (Excel.Worksheet)_app.ActiveWorkbook.Sheets["jreTemplates"];
}
catch
{
jresheet = (Excel.Worksheet)_app.ActiveWorkbook.Sheets.Add(Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
jresheet.Visible = Microsoft.Office.Interop.Excel.XlSheetVisibility.xlSheetVeryHidden;
jresheet.Name = "jreTemplates";
jresheet.Names.Add("next", "A1", true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
Excel.Range cell = jresheet.get_Range("next", Type.Missing);
cell.Value2 = value;
string address = ((Excel.Name)cell.Name).Name;
_app.ActiveWorkbook.Names.Add(name, address, false,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
cell = cell.get_Offset(1, 0);
jresheet.Names.Add("next", ((Excel.Name)cell.Name).Name, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
예외는 COM 라이브러리에서 발생하므로 포함 된 정보는 그리 유용하지 않습니다. 그러나, 여기있다 :
"Exception from HRESULT: 0x800A03EC"
"\ R \ n 서버 스택 트레이스 \ R \ n \ R \ n \ R \ nException 재 throw에 [0] : \ R \ n System.Runtime.Remoting에서. Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) \ r \ n System.Runtime.Remoting.Proxy.RealProxy.PrivateInvoke (MessageData & msgData, Int32 유형) \ r \ n Microsoft.Office.Interop.Excel._Worksheet C : \ Documents and Settings \ QueBITuser \ My Documents \ Visual Studio 2008 \ Projects \ JRE.WCF \ WorkbookTemplateManager의 WorkbookTemplateManager.EditTemplateForm.AddName (문자열 이름, 개체 값)의 .get_Range (Object Cell1, Object Cell2) \ r \ \ EditTemplateForm.cs : C : \ Documents and Settings \ QueBITuser \ My Documents \ Visual의 WorkbookTemplateManager.EditTemplateForm.SaveTemplate (Object Sender, EventArgs args)의 행 143 \ r \ n Studio 2008 \ Projects \ JRE.WCF \ WorkbookTemplateManager \ EditTemplateForm.cs : System.Windows.Forms.Control.OnClick (EventArgs e)에서 줄 124 \ r \ n System.Windows.Forms.Button.OnClick System.Windows.Forms.Control.WmMouseUp (메시지 &m, MouseButtons 단추, Int32 클릭)에서 System.Windows.Forms.Button.OnMouseUp (MouseEventArgs mevent) \ r \ n의 System.Windows.Forms.Control.WmMouseUp에서 \ r \ n System.Windows.Forms.Control.WndProc (메시지 &m) \ r \ n System.Windows.Forms.Button.WndProc (메시지 &m) \ r \ n System.Windows.Forms.Button.WndProc에서 (Message & m) \ r \ n System.Windows.Forms.Control.ControlNativeWindow.OnMessage (메시지 &m) \ r \ n System.Windows.Forms.Control.ControlNativeWindow.WndProc (메시지 &m) \ r \ n System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) "
당신은 예외 스택 추적을 게시하시기 바랍니다 수 있습니까? –
확인. 지금 게시됩니다. – mcoolbeth
jresheet.Names.Add ("next", "jreTemplates! $ A $ 1", ...? –