Laden...

auslesen markierter Excelzeilen

Erstellt von simethandreas vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.657 Views
S
simethandreas Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren
auslesen markierter Excelzeilen

Ich programmiere grad in .Net mit C# ein Excel Addin.
ich würd gerne auslesen lassen, welcher Bereich im Excel markiert wird.
Also in 2 Variablen speichern lassen von welcher Zeile x bis zu welcher Zeile y markiert wurde.
Wie mach ich das?
in VBA weiß ichs dass mit
ActiveWindow.RangeSelection.Address
geht...
..aber bei C# hab i null plan

239 Beiträge seit 2008
vor 14 Jahren

Hallo simethandreas,

das sollte mit der Selection-Property der Application-Klasse funktionieren. Diese gibt ein Range-Objekt zurück, die deine aktuelle Selektion darstellt.

Gruß Michbeck1983

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

S
simethandreas Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren

hey,
wie genau lautet da der befehl?

habs jetzt so versucht:

Excel.Range temp_range;
temp_range = Application.Selection;

und erhalte dann die fehlermeldung:
Cannot implicitly convert type 'object' to 'Microsoft.Office.Interop.Excel.Range'. An explicit conversion exists (are you missing a cast?)

239 Beiträge seit 2008
vor 14 Jahren

Hallo simethandreas,

die Fehlermeldung sagt doch schon alles eigentlich. Du musst noch eine Konvertierung vornehmen:


Excel.Range temp_range = Application.Selection as Excel.Range;

// oder

Excel.Range temp_range = (Excel.Range)Application.Selection;

Gruß Michbeck1983

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

S
simethandreas Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren

hab ich jetzt so gemacht, jetzt bringt er aber die fehlermeldung

Der Objektverseis wurde nicht auf eine Objektinstanz festgelegt.

239 Beiträge seit 2008
vor 14 Jahren

Hallo simethandreas,

verwende doch einfach den Debugger um zu schauen was da genau schiefläuft bzw. welches Objekt wann NULL ist.

Siehe dazu auch [FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

Ohne deinen Code zu kennen kann man nur spekulieren was da NULL ist.

Gruß Michbeck1983

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

S
simethandreas Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren

Also er bringt beim debuggen bei application die meldung
"'Application' threw an exception of type "System.nullreferenceexception""

bei selection:
"The name "selection" does not exist in the current context"

habs jetzt wie in deinen link beschrieben so umgesetzt:

            if((Excel.Range)Application.Selection!=null)
            {
                Excel.Range temp_range = (Excel.Range)Application.Selection;
            }

aber dann kommt die gleiche fehlermeldung

es ist aber im excel ein zellenbereich markiert, also application.selection müsste ja eigl nen wert haben, oder?

D
67 Beiträge seit 2009
vor 14 Jahren

Also er bringt beim debuggen bei application die meldung
"'Application' threw an exception of type "System.nullreferenceexception""

bei selection:
"The name "selection" does not exist in the current context"

habs jetzt wie in deinen link beschrieben so umgesetzt:

            if((Excel.Range)Application.Selection!=null)  
            {  
                Excel.Range temp_range = (Excel.Range)Application.Selection;  
            }  

aber dann kommt die gleiche fehlermeldung

es ist aber im excel ein zellenbereich markiert, also application.selection müsste ja eigl nen wert haben, oder?

Wenn Application == null dann bringt dir deine Abfrage gar nichts.

239 Beiträge seit 2008
vor 14 Jahren

Hallo simethandreas,

dann kann wahrscheinlich nur noch Application NULL sein. Es sollte eigentlich so gehen. Wie greifst du auf deine Excel-Datei zu?

Edit: DaemNice war da schneller

Gruß Michbeck1983

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

S
simethandreas Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren

Hab jetzt in der if-abfrage (application!=null) bring aber auch nix.

naja wie ich da zugreife check ich selber noch ned so...das .net projekt hat ein kollege gemacht und ich muss da jetzt weiterarbeiten.

ich habe in meinen .net projekt ne excel datei.
mit
ExcelWebservice.ThisWorkbook APOworkbook = new ThisWorkbook();
erzeuge ich dann ein neues.

239 Beiträge seit 2008
vor 14 Jahren

Hallo simethandreas,

ich vermute jetzt mal dass der Typ ThisWorkbook ein von Excel.Workbook abgeleiteter Typ ist. Versuche in diesem Falle doch mal, über ThisWorkbook auf Application zuzugreifen a la


Excel.Range myRange = (Excel.Range)deinWorkbook.ActiveWindow.Selection;

Gruß Michbeck1983

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

S
simethandreas Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren

habs jetzt so gecodet...fehler bringt er nicht 😃
Excel.Range myRange = (Excel.Range)meinWorkbook.Application.ActiveWindow.Selection;

wie bekomm ich jetzt aus dem myRange die erste und die letzte Zeile raus?
also int row_start= ersteZeile und
int row_ende=letzteZeile

S
simethandreas Themenstarter:in
22 Beiträge seit 2009
vor 14 Jahren

ich habs jetzt so gelöst:

               int start_zeile = Int32.Parse(myRange.Rows.Row.ToString());
                int end_zeile  = start_zeile-1+ myRange.Rows.Count;

geht bestimmt noch eleganter, aber es funktioniert 😃
danke für eure hilfe