Autor Beitrag
Joey86
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mo 22.03.10 01:36 
Hi!
Hoffe ihr könnt mir bei meinem Problem helfen.
Ich ermittle die Inhalte der Excelzellen und fülle sie in ein Array:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
            //Benutzerauswahl abfragen
            Range myRange = (Range)this.Application.ActiveWindow.Selection;

            //Werte der Zellen in System.Array Speichern
            System.Array werte = (System.Array)myRange.Value2;

            //Werte in ein mehrdimensionales Array speichern        
            object[,] arrayWerte = new object[werte.GetUpperBound(0), werte.GetUpperBound(1)];

            for (int i = 0; i < werte.GetUpperBound(0); i++)
            {
                for (int j = 0; j < werte.GetUpperBound(1); j++)
                {
                    if (werte.GetValue(i + 1, j + 1) != null)
                    {
                        arrayWerte[i, j] = (werte.GetValue(i + 1, j + 1).ToString());
                    }
                }
             }

Nun würde ich gern über zwei verschiedene Buttons diese Werte/dieses Array durch den einen Button kopieren und durch den anderen in einen beliebigen Range-Bereich kopieren.
Leider hänge ich da gerade. =/
Wie kann ich das umsetzen? Verwende ich dabei die Klasse System.Windows.Forms.Clipboard? Oder doch etwas anderes? Mir ist die Umsetzung, speziell in Excel, nicht ganz klar.

Gute Nacht! :)
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 22.03.10 10:45 
Hallo,

ich habe keine Erfahrung mit der Kooperation zwischen C# und Excel und werde mich auch nicht damit befassen. Aber so, wie ich beide Teile (separat) kenne, ist Clipboard mit Sicherheit ein umständlicher Umweg.

Genauso wie du ActiveWindow den ausgewählten Bereich abfragst, musst du doch auch eine Startposition bestimmen können und dort die Werte aus arrayWerte eintragen können.

Mit Makros geht das doch auch. Vielleicht hilft es, ein Makro aufzuzeichnen, den Code zu analysieren und in die .NET-Klassen zu übertragen.

Gruß Jürgen
Joey86 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mo 22.03.10 12:27 
Hi!
Mir ist nur leider nicht ganz klar, wie ich die Werte im Speicher halten soll.
Ich klicke auf einen Button um die Werte zu selektieren. Dann suche ich die Zelle,
in der ich sie einfügen möchte und klicke dann auf einfügen.
Nur ist mir nicht klar, wie ich das Array im Speicher halten soll, um es dann abzurufen.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 22.03.10 12:57 
user profile iconJoey86 hat folgendes geschrieben Zum zitierten Posting springen:
Nur ist mir nicht klar, wie ich das Array im Speicher halten soll, um es dann abzurufen.

Ach, das ist dein Problem? Dann musst du die Variable an einer Stelle deklarieren, die für alle Stellen gültig ist, an denen du dieses Array brauchst. Dein Code und deine Beschreibung sagen das nicht ganz eindeutig; aber offensichtlich brauchst du es für einen ButtonCopy-EventHandler und einen ButtonPaste-EventHandler. Beide liegen vermutlich im selben Formular; also muss das Array ein (private) Member des Formulars sein.

In deinem bereits zitierten Code wird (ohne neue Deklaration!) der Wert zugewiesen, in dem Code, den du jetzt suchst, wird der Wert abgefragt.

Du solltest dich offensichtlich mit dem Themen Variable, Deklaration, Gültigkeitsbereich befassen.

Gruß Jürgen
Joey86 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mo 22.03.10 13:15 
Oh man...wieder ein klarer Indiz dafür, dass ich einfach nicht programmieren kann. =(
Hab viel zu umständlich gedacht.
Hat funktioniert. Danke dir!