2012-08-24 7 views
6

przy użyciu C# w .NET 3.5 z Visual Studio 2008, Próbuję ustawić ostrość (lub włączyć) konkretny arkusz w otwartym skoroszycie:użyciu C#, aby wybrać arkusz w Excelu

Oto niektóre właściwości:

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

a oto jak próbuję wybrać konkretny arkusz:

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

I próbowałem również w ten sposób:

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

Co robię źle? Jak wybrać określony skoroszyt w skoroszycie przy użyciu C#?


wyjaśnienie gdzie definicje są:

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

i wszystko jest w tej samej klasie i nazw

tutaj jest jak jest 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); 

Odpowiedz

2

Oto co zrobiłem i to działa!

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

Działa to tylko, jeśli ustawisz .Visible = True – Denis

6

są twoje zainicjalizowane właściwości?

Jeśli są, powinieneś być w stanie osiągnąć to, co staramy się za pomocą jednej z tych:

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

Jeśli nie są one, należy zainicjować przynajmniej xlApp nieruchomość do Application obiekt, z którym pracujesz, a następnie użyj powyższego kodu. Możesz zainicjować pierwsze dwa obiekty, używając poniższego kodu.

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

dziękuję bardzo. czy możesz wyjaśnić, jak to zainicjować? –

+0

dziękuję, dodałem informacje o tym, jak rzeczy zostały zainicjowane –

+0

Więc właściwości są już zainicjalizowane. Czy próbowałeś użyć kodu pod ** Jeśli są **? –

16

można użyć następującego kodu:

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

lub

sheet.Activate(); 

Użyłem tego kodu i działa dobrze dla mnie.

+1

Działa to tylko, jeśli ustawisz .Visible = True – Denis

0

Można zrobić to w obie strony:

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

  2. xlWorksheet = xlApp.Worksheets[1];

0

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

lub

xlWorkSheet = (roboczym) xlWorkBook.Sheets [ "nazwa arkusza"];

+1

Spróbuj sformatować swoją odpowiedź lepiej i dodaj wyjaśnienie. – Sam