Autor Beitrag
KingCanadian
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 19.09.13 10:08 
Hallo zusammen,

kurz ein paar Worte zu mir: Ich habe bisher nur mit PHP programmiert und das auch nicht objektorientiert.
Aber irgendwann muss man ja mal anfangen. Am Besten lerne ich mit learning-by-doing, weshalb ich mich gleich
auf das erste Projekt stürze.

Aufgabe: Öffnen von 2 bestehenden Excel(2010) Dateien und kopieren eines Arbeitsblattes von einer in die andere Datei.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
//Excel-Objekt erzeugen
var excelApp = new Microsoft.Office.Interop.Excel.Application();

//Quelldatei öffnen
Excel.Workbook xlWorkbook2 = xlWorkbooks.Open(pfadQuellDatei);
Excel.Worksheet sheetabfrage = (Excel.Worksheet)xlWorkbook2.Worksheets["Übersicht"];

//Zieldatei öffnen
Excel.Workbooks xlWorkbooks = excelApp.Workbooks;
Excel.Workbook xlWorkbook = xlWorkbooks.Open(pfadZielDatei);
Excel.Sheets destSheets = xlWorkbook.Sheets;

//Tabellenblatt kopieren
sheetabfrage.Copy(Missing.Value, destSheets);


Meinem Verständnis nach habe ich dann das Sheet dass kopiert werden soll in "sheetabfrage"
und eine Sammlung der Sheets in der Zieltabelle in "destSheets". Dann fügt man mit copy
"sheetabfrage" der Sammlung hinzu. Scheint aber nicht so einfach zu sein.

Ergebnis: Excel öffnet die beiden Dateien,aber das Register wird nicht kopiert
sondern ich erhalte die Fehlermeldung: Ausnahme von HResult 0x800A03EC

Wäre schön wenn mir hier jemand auf die Sprünge helfen könnte wie ich weitermachen kann.

Gruß
Jürgen

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 19.09.13 10:32 
Vorweg damit wirst du kaum was bezüglich Programmierung lernen. Du lernst vielleicht wie die Excel API funktioniert aber wie man programmiert/programmieren sollte nicht. Falls das tatsächlich ein Projekt zum lernen sein soll würde ich dir empfehlen demnächst abstraktere Probleme zu wählen und nicht etwas was von einem 3.ten abhängt. Man lernt überlicherweise so nur wie dieser 3.te funktioniert.

Bei deinem Problem rate ich mal das es daran liegt das du Sheets in die Copy Methode wirfst. Die möchte aber einen Sheet vor(oder nach) dem sie das neue Sheet einfügen kann und nicht einen Stapel von Sheets.
KingCanadian Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 19.09.13 16:09 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Vorweg damit wirst du kaum was bezüglich Programmierung lernen. Du lernst vielleicht wie die Excel API funktioniert aber wie man programmiert/programmieren sollte nicht. Falls das tatsächlich ein Projekt zum lernen sein soll würde ich dir empfehlen demnächst abstraktere Probleme zu wählen und nicht etwas was von einem 3.ten abhängt. Man lernt überlicherweise so nur wie dieser 3.te funktioniert.

Das verstehe ich nicht so recht - was meinst du mit "abstrakteren Problemen" und "was von einem 3. abhängt"?
Dinge die man in Büchern liest kommen mir immer recht abstrakt vor und die Umsetzung dieser Abstrakten Dinge zur Lösung alltäglicher Probleme ist das, woran es dann bei mir mangelt.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 19.09.13 16:36 
Du sagst du willst programmieren lernen. Also wäre der erste Ansatz sich ein Problem zu suchen das nur mit der konkret gewählten Programmiersprache(1.) zu tun hat und Programmierkonzepten(2.). Du hast dir aber noch Excel draufgepackt. Das 3.te Problem das die anderen beiden überstrahlt.

Was du hier tust ist dich mit der Excel API zu beschäftigen und den speziellen Excel Problemen. Das was du da lernst hilft dir nur im Zusammenspiel zwischen C# und Excel. Der Erfahrungsgewinn bezüglich C# und wie man damit programmiert geht dagegen fast gegen 0.

Oder hast du den Code komplett selbst geschrieben? Dann ein großes Chapeau wenn du dir tatsächlich im Office Ordner die Excel API rausgesucht hast, nur damit dann den ganzen Code Zeile für Zeile zusammengebaut und damit dann nätürlich auch jede Zeile verstanden hast. Ich gehe mal schwer davon aus das du 90% des Code aus google hast ganz einfach weil Excel zu speziell ist um sich das zu erarbeiten. Das meiste ist von irgendjemanden schon gemacht worden und auch ich würde nur noch das Legoprinzip anwenden und die gefunden Codefragmente zu einem Programm zusammensetzen.