2012-08-24 85 views
6

con C# en .NET 3.5 con Visual Studio 2008, estoy tratando de establecer el foco (o activar) una hoja de trabajo específico en un libro abierto:usando C# para seleccionar una hoja de cálculo en Excel

Aquí hay algunas propiedades:

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

Y aquí es como yo estoy tratando de seleccionar una hoja de cálculo específica:

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

Y también he tratado de esta manera:

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

¿Qué estoy haciendo mal? ¿Cómo selecciono una hoja de trabajo específica en un libro de trabajo usando C#?


explicación de donde las definiciones son:

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; }  

y todo está en la misma clase y espacio de nombres

aquí es cómo se initiliazed:

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); 

Respuesta

2

Aquí es lo que hice y funciona!

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

Esto solo funciona si establece .Visible = True – Denis

6

Son sus propiedades inicializadas?

Si son, probablemente debería ser capaz de lograr lo que se está intentando por cualquiera de aquellos:

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

Si no son, se debería inicializar al menos xlApp propiedad a Application objeto con el que está trabajando y luego use el código anterior. Puede inicializar los dos primeros objetos usando el siguiente código.

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

muchas gracias. ¿Puedes aclarar cómo podría inicializar eso? –

+0

gracias, he incluido información sobre cómo se inician las cosas –

+0

Por lo tanto, las propiedades ya están inicializadas. ¿Has intentado usar el código debajo de ** Si son **? –

16

Usted puede utilizar el siguiente código:

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

o

sheet.Activate(); 

He utilizado este código y funciona bien para mí.

+1

Esto solo funciona si establece .Visible = True – Denis

0

Usted puede hacer dos cosas:

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

  2. xlWorksheet = xlApp.Worksheets[1];

0

xlWorksheet = xlWorkBook.Worksheets (hoja de trabajo).get_Item (2);

O

xlWorksheet = (hoja de trabajo) xlWorkBook.Sheets [ "SheetName"];

+1

Intente formatear su respuesta mejor y agregue alguna explicación. – Sam

Cuestiones relacionadas