Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler beim Excel-Datei via SaveAs in CSV speichern (https://www.delphipraxis.net/77933-fehler-beim-excel-datei-via-saveas-csv-speichern.html)

crocodilechris 26. Sep 2006 23:29


Fehler beim Excel-Datei via SaveAs in CSV speichern
 
Gute Nacht / Guten Tag,

ich hab das Problem, dass ich eine Excel-Datei habe, welche ich via Delphi öffnen und als CSV-Datei speichern will, um diese dann zu parsen. Ich bekomme die Datei aber nicht in ein anderes format gespeichert. :(

//->Edit
Achja: Ich benutze Delphi 2005PE
//<-Ende:Edit

Ich bringe mir grad via #delphi.de @ Quakenet, Tutorials, InternetMaterial und der Hilfe den Umgang damit bei, jedenfalls versuche ich das und bin also noch nicht so bewandert im Umgang mit der OLE-Verwendung.

Mein Makro sieht wie folgt aus:
Code:
Sub Makro1()
'
' Makro1 Makro
'
    ChDir "E:\Projekte\abi schule"
    Workbooks.Open Filename:="E:\Projekte\abi schule\ProbedatenAbitur.xls"
    ActiveWorkbook.SaveAs Filename:="E:\Projekte\abi schule\ProbedatenAbitur.csv", FileFormat:=xlCSV, CreateBackup:=False
    ActiveWorkbook.Close
End Sub
mein Delphi Code seiht dann wie folgt aus:
Delphi-Quellcode:
var
Excel: Variant

procedure TForm1.Button2Click(Sender: TObject);
begin
Excel := CreateOleObject('Excel.Application');

Excel.Workbooks.Open('E:\Projekte\abi schule\ProbedatenAbitur.xls');

Excel.SaveAs (FileFormat:='xlCSV', Filename:='E:\Projekte\abi schule\ProbedatenAbitur.csv');

Excel.Visible := true;
Excel := unassigned;
end;
Die Exception (wärend der Laufzeit):
Debugger-Error:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EOleError mit der Meldung 'Die Methode 'SaveAs' wird vom Automatisierungsobjekt nicht unterstützt' aufgetreten.
---------------------------

Programm-Error:
---------------------------
Project1
---------------------------
Die Methode 'SaveAs' wird vom Automatisierungsobjekt nicht unterstützt.
---------------------------


Was mach ich falsch? Zu wenig parameter angegeben, oder falsche Reihenfolge?

Vielen Dank für eure kommende Hilfe.

crocodilechris

mkinzler 26. Sep 2006 23:58

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
Es müßte m.E. Excel.ActiveWorkbook.SaveAs heißen

crocodilechris 27. Sep 2006 11:09

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
habs auch mit ActiveWorkbook probiert, wie es im Makro steht, wirft aber Haargenau den selben Fehler aus :(

crocodilechris 28. Sep 2006 21:32

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
Keiner eine Ahnung, wie man dieses Problem lösen könnte?

Ich kann die Datei als xls speichern, aber sobald ich in irgendeiner weise die FileFormat methode benutze, dann gibt es einen Fehler :(

Oder gibt es noch eine andere Möglichkeit die xls-Datei in eine CSV-Datei zu speichern?

EWeiss 28. Sep 2006 21:38

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
Zitat:

Zitat von crocodilechris
Keiner eine Ahnung, wie man dieses Problem lösen könnte?

Ich kann die Datei als xls speichern, aber sobald ich in irgendeiner weise die FileFormat methode benutze, dann gibt es einen Fehler :(

Oder gibt es noch eine andere Möglichkeit die xls-Datei in eine CSV-Datei zu speichern?

weiß nicht obs damit zutun hat"
Du gibst an 'xlCSV' müßte das nicht xlsCSV' heißen?

gruß

x000x 28. Sep 2006 23:10

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
Moin moin,

probiers doch mal so:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
   Excel: Variant;
const
   xlCSV                 =    6;
   xlCSVMSDOS            =   24;
   xlCurrentPlatformText = -4158;
   xlDBF3                 =    8;
   xlDIF                 =    9;
   xlExcel2FarEast       =   27;
   xlExcel4               =   33;
   xlAddIn               =   18;
   xlCSVMac              =   22;
   xlCSVWindows          =   23;
   xlDBF2                 =   23;
   xlDBF4                 =   11;
   xlExcel2               =   16;
   xlExcel3               =   29;
   xlExcel4Workbook      =   35;
   xlExcel5               =   39;
   xlExcel7               =   39;
   xlExcel9795            =   43;
   xlHtml                =   44;
   xlIntlAddIn           =   26;
   xlIntlMacro           =   25;
   xlSYLK                =    2;
   xlTemplate            =   17;
   xlTextMac             =   19;
   xlTextMSDOS           =   21;
   xlTextPrinter         =   36;
   xlTextWindows         =   20;
   xlUnicodeText         =   42;
   xlWebArchive          =   45;
   xlWJ2WD1               =   14;
   xlWJ3                  =   40;
   xlWJ3FJ3               =   41;
   xlWK1                  =    5;
   xlWK1ALL              =   31;
   xlWK1FMT              =   30;
   xlWK3                  =   15;
   xlWK3FM3               =   32;
   xlWK4                  =   38;
   xlWKS                 =    4;
   xlWorkbookNormal      = -4143;
   xlWorks2FarEast       =   28;
   xlWQ1                  =   34;
   xlXMLSpreadsheet      =   46;
begin
   Excel := CreateOleObject('Excel.Application');
   Excel.Workbooks.Open('c:\test.xls');
   Excel.ActiveWorkbook.SaveAs('c:\test.csv', xlCSV);
   Excel.ActiveWorkbook.Close(False);
   //Excel.Visible := true;
   Excel := unassigned;
end;
Wie auch in deinem VB Beispiel wird bei SaveAs zuerst der Dateiname und dann das Format
übergeben.
Wenn du dir bei sowas mal unsicher bist, kannst du die Hilfe von Excel/VBHilfe heranziehen,
dort stehen auch die Konstanten.

crocodilechris 29. Sep 2006 08:16

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
Hey,

Danke für den letzten Tip mit den Zahlen, das Problem hatte ich grade gestern nach dem ich den Post geschrieben habe, dass der Compiler ne Double wollte aber nur nen String bekam, ich wusste allerdings nich was an xlCSV ne Zahl sein sollte, jetzt weiß ich es :)

Wo gibt es denn diese Zahlen her?
Ich hab die VB-Hilfe herangezogen, aber egal ob ich die Eigenschaften (z.B. FileFormat oder FileName) per := definiert habe oder nur die werte eingetragen habe, nie funzte die Methode SaveAs.

Werde es nächste Woche ausprobieren, wenn ich wieder Zeit habe zum Proggen.

Bis denne und herzlichen Dank :D

x000x 29. Sep 2006 12:29

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
Zitat:

Zitat von crocodilechris
Wo gibt es denn diese Zahlen her?

-> Excel starten
-> ALT+F11 drücken
-> UserForm einfügen
-> Button einfügen und doppelklick
-> MsgBox Int(xlCSV) reinschreiben und Macro ausführen
-> Wert ablesen

Geht vll. auch einfacher, ich habs so jedenfalls gemacht...

crocodilechris 29. Sep 2006 16:47

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
okay, doch schon eher zum Testen gekommen :)

es funktioniert :dancer2: ,:gruebel: aber wie zum Teufel bist du darauf gekommen, dass man das evtl. in ne Zahl umwandeln muss?:gruebel: In der VB-Hilfe steht ja nur drinne, das es ne Variant-Variable sei...

crocodilechris 30. Sep 2006 19:53

Re: Fehler beim Excel-Datei via SaveAs in CSV speichern
 
hab durch Zufall eine Variante gefunden, die wohl besser und richtiger zu sein scheint:
Delphi-Quellcode:
var
  xlCSV6: OleVariant;
begin
xlCSV6 := xlCSV;

{...}
Excel.ActiveWorkbook.SaveAs
    (FileFormat := xlCSV6,
     Filename := 'E:\Projekte\abi schule\ProbedatenAbitur.csv',
     CreateBackup := false
    );
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz