2009-12-14 2 views
0

Excel COM과 함께 SharePoint에 파일 저장 문제가 생깁니다. 파일을 열었지만 'xlviewer.xlsx'로 열리므로 원본 파일을 덮어 쓸 필요가 있다고 가정합니다. (I 일부 오류 처리를 수행 할 시도/캐치를 제거했습니다.) 내가 할 때 나는이 오류가 발생합니다 : "인덱스 목록의 끝을지나 말한다"다른 (오류를 줄 42 '다른 이름으로 저장 문')오류 - 색인이 목록의 끝을 초과 함을 나타냅니다.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Excel = Microsoft.Office.Interop.Excel; 
using System.Reflection; 
using System.IO; 

namespace CopyInteractionIds 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Excel.Application oApp; 
      Excel._Workbook oWbFrom; 
      Excel._Workbook oWbTo; 
      Excel._Worksheet oWsFrom; 
      Excel._Worksheet oWsTo; 
      Excel.Range oRngFrom; 
      Excel.Range oRngTo; 

      //try 
      //{ 
       oApp = new Excel.Application(); 
       oApp.Visible = true; 
       Console.WriteLine("Opening source workbook"); 
       oWbFrom = (Excel._Workbook)(oApp.Workbooks.Open(@"path to my source wb" 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value)); 
       Console.WriteLine("Opening edited workbook"); 
       oWbTo = (Excel._Workbook)(oApp.Workbooks.Open(@"https://path to my out wb" 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value 
        , Missing.Value, true, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value)); 
       Console.WriteLine("Copying data"); 
       oWsFrom = (Excel._Worksheet)oWbFrom.Worksheets.get_Item("Interaction Number Lookup"); 
       oWsTo = (Excel._Worksheet)oWbTo.Worksheets.get_Item("Interaction Number Lookup"); 
       oRngFrom = oWsFrom.get_Range("=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1))",Missing.Value); 
       oWsTo.get_Range("=OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1))", Missing.Value).Clear(); 
       oRngTo = oWsTo.get_Range("A1",Missing.Value); 
       oRngFrom.Copy(oRngTo); 
       Console.WriteLine("Saving edited file"); 
       oWbTo.SaveAs(@"path to out file" 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value 
        ,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Missing.Value 
        , Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
       oWbTo.Close(false,Missing.Value,Missing.Value); 
       oWbFrom.Close(false, Missing.Value, Missing.Value); 
       oApp.Quit(); 
      //} 
      //catch(Exception ex) 
      //{ 
      // Console.WriteLine("Unable to process job: {0}",ex.Message); 
      //} 

     } 
    } 
} 
+2

정확히 어떤 줄이 예외를 throw 하는지를 아는 데 도움이됩니다. –

+0

헝가리 = 나쁜데, 당신이 선언 한 모든 변수에 앞에 o가 있습니까?! 어떤 줄이 나옵니까? –

+0

헝가리 = vba 습관 권자 –

답변

0

사람 파일을 열어 뒀어.

1

비슷한 문제가 있었는데 파일이 손상된 것으로 나타났습니다. 모두 열면 Excel을 복구 한 다음 손상된 파일을 덮어 쓰면 나에게 트릭을 보내는 것처럼 보였습니다.

관련 문제