Neue Excel Datei



  • Hi!

    Kann ich mit den Ole Funktionen eine neue Excel Datei erstellen? oder muss ich einfach eine Datei mit der Endung .xls erstellen und dann dort die Daten reinschreiben?

    Thx



  • Hallo

    Das geht sicher. Schau dir im Zweifelsfall immer die VBA-Hilfe an, dort werden die ganzen Befehle erklärt die du auch über OLE nutzt.

    bis bald
    akari



  • siehe z.B. in der FAQ -> "Daten nach Excel exportieren", dort wird erst eine neue Excel-Mappe erstellt, dann gefüllt und unter einem beliebigen Namen gespeichert



  • try
          {
              Variant WorkBooks = Excel.OlePropertyGet("WorkBooks");
              WorkBooks.OleFunction("Add");
    
              Variant ActiveWorkBook = Excel.OlePropertyGet("ActiveWorkbook");
    
              Variant WorkSheets = Excel.OlePropertyGet("Worksheets");
    
              Variant WorkSheet = WorkSheets.OlePropertyGet("Item", 1);
              WorkSheet.OleFunction("Activate");
    
              for (int i = 0; i < Liste->RowCount; i ++)
              {
    
                Variant Spalte_Nummer = WorkSheet.OlePropertyGet("Cells",1+i,1);
                Variant Spalte_Beschreibung = WorkSheet.OlePropertyGet("Cells",1+i,2);
                Variant Spalte_Preis = WorkSheet.OlePropertyGet("Cells",1+i,3);
    
                Spalte_Nummer.OlePropertySet("Value",Liste->Cells[1][i]);
                Spalte_Beschreibung.OlePropertySet("Value",Liste->Cells[2][i]);
                Spalte_Preis.OlePropertySet("Value",Liste->Cells[3][i]);
                /*Variant Range1 = WorkSheet.OlePropertyGet("Cells", i+1, 1); // 1.Zeile / 1.Spalte
                Range1.OlePropertySet("Value", Liste->Cells[i][1]);
    
                Variant Range2 = WorkSheet.OlePropertyGet("Cells", i+1, 2); // 1.Zeile / 2.Spalte
                Range2.OlePropertySet("Value", Liste->Cells[i][2]);
    
                Variant Range3 = WorkSheet.OlePropertyGet("Cells", i+1, 3); // 1.Zeile / 3.Spalte
                Range3.OlePropertySet("Value", Liste->Cells[i][3]);    */
              }
    
              ActiveWorkBook.OleFunction("SaveAs", datei.c_str());
    
              Application->MessageBox("Fertig","Dummy",MB_ICONINFORMATION);
          }
          catch(...)
          {
            Application->MessageBox("Fehler","Dummy",MB_ICONINFORMATION);
          }
    
          Excel.OleFunction("Quit");
    
          Excel = Unassigned;
    

    Habe nun das, danke erstmal. Allerdings tritt dauernd ein Fehler auf, und die Catch Anweisung wird ausgeführt. Datei ist ein AnsiString mit Pfad, dateiname und endung

    thx



  • ok, klappt danke 😉


Anmelden zum Antworten