Zum Inhalt springen

PibeY2k

Mitglieder
  • Gesamte Inhalte

    30
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von PibeY2k

  1. *g*ok..... hatte das nur reinkopiert und dann sah das irgendwie nicht so aus wie im Compiler.... Beim nächsten mal mache ich es besser Und danke für deinen Tipp.....daran lags wirklich......weiß zwar nicht genau, warum der dann gerade ab 99 abstürzt, aber jetzt klappt es Danke
  2. Ich habe folgendes Problem. Ich habe ein Programm geschrieben, welches 2 Exceldateien öffnen. Die erste Spalte einließt und miteinander vergleicht. Die übereinstimmenden Datensätze schreibt das Programm in eine neue Excelmappe. Das funtkioniert auch soweit, aber nur solange die erste Datei unter 99 Datensätze hat. Er wirft mir beim öffnen des 2ten Worbooks folgenden fehler aus. "Die Open Methode des Workbooks-Objektes ist fehlerhaft" Dann hört das Programm auf zu laufen. /***Hier deklarier ich die benötigten Variablen um, meine erste Datei zu öffnen***/ _Application app; // app is the Excel _Application object. _Workbook book_group; _Worksheet sheet_group; Workbooks books_group; Worksheets sheets_group; Range range_group; LPDISPATCH lpDisp_group; char str_group[100]; //Hilfsstring, zum Umwandeln von Int in char int zeile_group =4; //Anzahl der Datensätze int exit_group = 0; //zum, setzen der Endbedinung, beim ermitteln der Anzahl der Datensätze COleVariant test_group; CStringArray Racf_group; //Array indem alle RacFs aus GroupData gespeichert werden /***Hier öffne ich die Datei***/ // Allgemein verwendete OLE Varianten. Diese sind die einfachen für das Benennen zu verwendenden Varianten von Argumenten. COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); // Start Excel and get the Application object. if(!app.CreateDispatch("Excel.Application")) { AfxMessageBox( "Couldn't start Excel and get an application 0bject"); return; } // Get Workbooks collection. lpDisp_group = app.GetWorkbooks(); // Get an IDispatch pointer. ASSERT(lpDisp_group); books_group.AttachDispatch( lpDisp_group ); // Attach the IDispatch pointer // to the books object. // Open a workbook. lpDisp_group = books_group.Open(m_gd_pathname, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional ); ASSERT(lpDisp_group); // Attach to a Workbook object. book_group.AttachDispatch( lpDisp_group ); // Attach the IDispatch pointer // to the Workbook object. // Get sheets. lpDisp_group = book_group.GetSheets(); ASSERT(lpDisp_group); sheets_group.AttachDispatch(lpDisp_group); lpDisp_group = sheets_group.GetItem( COleVariant((short)(1)) ); ASSERT(lpDisp_group); // Attach the lpDisp pointer to a Worksheet object. sheet_group.AttachDispatch(lpDisp_group); /***In diesem Teil speicher ich alle Elemente der Spalte in Racf_group***/ do { char Zelle[] = "A"; //Am Anfang der Schleife neudeklarieren, damit nur A in Zelle drin steht // Umwandeln der Zeilenzahl in einen String itoa(zeile_group,str_group,10); //Anhängen des Zeilenzahlstrings an die Spaltenbezeichnung strcat(Zelle, str_group); lpDisp_group = sheet_group.GetRange(COleVariant(Zelle), COleVariant(Zelle)); //markieren der Zelle ASSERT(lpDisp_group); range_group.AttachDispatch(lpDisp_group); // Attach the IDispatch pointer // the range object. test_group = range_group.GetText(); //Auslesen der markierten Zelle //Überprüfen ob etwas in der Zelle drin steht LPVARIANT p = test_group; if( p->vt != VT_EMPTY ) { try { test_group.ChangeType( VT_BSTR ); CString s_group = test_group.bstrVal; if(s_group == "") { exit_group = 1; // Endbedinung setzen, wenn nichts mehr in einer Zelle steht } else { Racf_group.Add(s_group); //Einlesen der Datensätze von GroupData } } catch( COleException& e ) { e.ReportError(); } } zeile_group++; }while(exit_group != 1); /***Soweit funktioniert das ganze auch noch....***/ /***Dann deklarier ich die Variablen für das öffnen der 2ten Datei***/ _Workbook book_search; _Worksheet sheet_search; Workbooks books_search; Worksheets sheets_search; Range range_search; LPDISPATCH lpDisp_search; char str_search[100]; //Hilfsstring, zum Umwandeln von Int in char int zeile_search = 1; //Anzahl der Datensätze int exit_search = 0; //zum, setzen der Endbedinung, beim ermitteln der Anzahl der Datensätze COleVariant test_search; CStringArray Racf_search; //Array indem alle RacFs aus GroupData gespeichert werden // Get Workbooks collection. lpDisp_search = app.GetWorkbooks(); // Get an IDispatch pointer. ASSERT(lpDisp_search); books_search.AttachDispatch( lpDisp_search ); // Attach the IDispatch pointer // to the books object. AfxMessageBox("Öffnen des SearchData Workbooks"); // Open a workbook. lpDisp_search = books_search.Open(m_sd_pathname, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional ); [COLOR=red] /***hier gibt er mir den Fehler aus, und hört auf weiter zulaufen***/[/COLOR] AfxMessageBox("Nachm öffnen d"); ASSERT(lpDisp_search); AfxMessageBox("Nachm öffnen"); // Attach to a Workbook object. book_search.AttachDispatch( lpDisp_search ); // Attach the IDispatch pointer // to the Workbook object. AfxMessageBox("Attach Workbook"); // Get sheets. lpDisp_search = book_search.GetSheets(); ASSERT(lpDisp_search); sheets_search.AttachDispatch(lpDisp_search); AfxMessageBox("Get sheets"); lpDisp_search = sheets_search.GetItem( COleVariant((short)(1)) ); ASSERT(lpDisp_search); // Attach the lpDisp pointer to a Worksheet object. sheet_search.AttachDispatch(lpDisp_search); Warum läuft das Programm, wenn die erste Datei weniger als 99 Datensätze hat? Und bei 99 und mehr nicht mehr? Mache ich irgendwas falsch, irgendwas übersehen? Wäre nett, wenn mir jemand helfen kann.... Danke...
  3. Super das funktioniert, danke Aber erzähl mir mal was die Zeile bewirkt if( p->vt != VT_EMPTY ) Danke
  4. Muss ich dafür noch ne Header Datei einfügen? Der kennt die Funktion irgendwie nicht :confused: In der Hilfe habe ich es auch nicht gefunden....
  5. Hi Ich habe mittels automation eine Schnittstelle zu Excel hergestellt. http://support.microsoft.com/default.aspx?scid=kb;EN-US;178749 Wenn ich jetzt aus einer Zelle etwas auslese wird es in einer COleVariant Variablegelesen. Wie kann ich jetzt diese variable in einen String umwandeln, damit ich überprüfen kann, ob etwas drin steht oder nicht. Oder kann ich das auch anders überprüfen? Danke, schonmal. PibeY2k
  6. Mach dich nicht verrückt.... Bei mir ist das erste Semester zwar schon 2 Jahre her und da haben sich bestimmt ein paar sachen verändert, aber im allgemeinen sind es so um die 70 Fragen... Wenn du alle Tests vorher gut bestanden hast, dann kennst du die meisten Fragen auch schon....also dürfte es kein Problem sein Viel Erfolg PibeY2k

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...