Zum Inhalt springen

PibeY2k

Mitglieder
  • Gesamte Inhalte

    30
  • Benutzer seit

  • Letzter Besuch

Beiträge von PibeY2k

  1. 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...

  2. 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...