2012-08-24 8 views
6

Verwendung von C# in .NET 3.5 mit Visual Studio 2008 zu wählen, ich versuche Fokus zu setzen (oder aktiviert) ein bestimmtes Arbeitsblatt in einer geöffneten Arbeitsmappe:mit C# ein Arbeitsblatt in Excel

Hier sind einige Eigenschaften:

public Excel.Application xlApp {get;set;} 
public Excel.Workbook xlWorkBook { get; set; } 
public Excel.Worksheet xlWorkSheet { get; set; } 
public Excel.Range range { get; set; }   

Und hier ist, wie ich versuche, ein bestimmtes Arbeitsblatt auszuwählen:

(xlWorkSheet)Application.ActiveWorkbook.Sheets[FormControls.WorksheetFocus]).Select(Type.Missing); 

Und ich habe auch versucht, auf diese Weise:

((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets[1]).Select(); 

Was mache ich falsch? Wie wähle ich ein bestimmtes Arbeitsblatt in einer Arbeitsmappe mit C# aus?


Erklärung, wo die Definitionen sind:

namespace EmailSalesVolumeSolution 
{ 
    class WorkBook 
    { 
     public string MasterFileName { get; set; } 
     public string[] DistinctEmails { get; set; } 
     public Excel.Application xlApp {get;set;} 
     public Excel.Workbook xlWorkBook { get; set; } 
     public Excel.Worksheet xlWorkSheet { get; set; } 
     public Excel.Range range { get; set; }  

und alles ist in der gleichen Klasse und Namespace

hier wird, wie es initiliazed ist:

private void OpenWorkBook() 
{ 
    string str; 
    int rCnt = 0; 
    int cCnt = 0; 


    xlApp = new Excel.ApplicationClass(); 
    xlWorkBook = xlApp.Workbooks.Open(MasterFileName, 0, true, 5, "", "", true, 
     Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, 
     "\t", false, false, 0, true, 1, 0); 
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(FormControls.WorksheetEmails); 

Antwort

2

Hier ist was ich getan habe und es funktioniert!

Excel.Worksheet xlWorkSheetFocus = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2); 
xlWorkSheetFocus.Activate(); 
+0

Dies funktioniert nur, wenn Sie .Visible = True setzen – Denis

6

Sind Ihre Eigenschaften initialisiert?

Wenn sie sind, sollten Sie wahrscheinlich in der Lage sein, zu erreichen, was Sie entweder von denen zu versuchen:

xlApp.ActiveWorkbook.Sheets[1].Activate(); 
xlWorkbook.Sheets[1].Activate(); 
xlSheet.Activate(); 

Wenn sie nicht sind, sollten Sie initialisieren mindestens xlApp Eigenschaft Application Objekt, mit dem Sie arbeiten, und dann den obigen Code verwenden. Sie können die ersten zwei Objekte mit dem folgenden Code initialisieren.

xlApp = new Microsoft.Office.Interop.Excel.Application(); 
Workbooks xlWorkbooks = xlApp.Workbooks; 
xlWorkbook = xlWorkbooks.Open(@"C:\filename.xlsx"); 
+0

vielen Dank. Kannst du erklären, wie ich das initialisieren würde? –

+0

danke, ich habe Informationen darüber, wie Dinge initialisiert werden –

+0

Also die Eigenschaften sind bereits initialisiert. Haben Sie versucht, den Code unter ** Wenn sie ** sind? –

16

können Sie den folgenden Code verwenden:

Worksheet sheet = (Worksheet)xlApp.Worksheets[1]; 
sheet.Select(Type.Missing); 

oder

sheet.Activate(); 

Ich habe diesen Code verwendet, und es funktioniert gut für mich.

+1

Dies funktioniert nur, wenn Sie .Visible = True setzen – Denis

0

Sie können es beide Möglichkeiten:

Excel.Application xlApp; 
Excel.Worksheet xlWorksheet; 
  1. xlWorksheet = xlApp.Worksheets.get_Item(1);

  2. xlWorksheet = xlApp.Worksheets[1];

0

xlWorkSheet = (Arbeitsblatt) xlWorkBook.Worksheets.get_Item (2);

OR

xlWorkSheet = (Arbeitsblatt) xlWorkBook.Sheets [ "Sheetname"];

+1

Versuchen Sie, Ihre Antwort besser zu formatieren und eine Erklärung hinzuzufügen. – Sam