Entwickler-Ecke

Dateizugriff - Speichern als .xls (OLE und Office 2007)


jackle32 - Do 18.03.10 13:22
Titel: Speichern als .xls (OLE und Office 2007)
Hallo zusammen,

ich bin gerade am erstellen eines kleinen Programms, dass als "Datenbank" ein Excelfile benutzt. Da ich auf meinem Entwicklungsrechner Office 2007 drauf hab, greift natürlich auch Delphi über die OLE Schnittstelle auf 2007 zu.

Wie ich Dateien speichere ist klar (Excel.ActiveWorkbook.SaveAs(Dateiname)). Nur speichert mir Excel 2007 jetzt immer im ".xlsx" Format ab. Obwohl der Dateiname z.B. "test.xls" ist.

Weiß jemand ob man dem SaveAs (und auch dem Save) einen Parameter mitgeben kann, um im "alten" .xls Format zu speichern?

Gruß Jack


Narses - Do 18.03.10 13:25

Moin!

Ja, es gibt da einen Parameter, einfach mal ein Makro von Speichern als xls erstellen, dann siehst du das im VB Code. :idea: ;)

cu
Narses


jackle32 - Do 18.03.10 13:36

Hallo,


okay hier der Code aus dem Macro:


Quelltext
1:
2:
3:
4:
ActiveWorkbook.SaveAs Filename:= _
        "C:\Documents and Settings\tchristgau\Desktop\Book1.xls", FileFormat:= _
        xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False


Der Parameter ist also "xlExcel8". Wenn ich den aber als zweiten Parameter im SaveAs übergebe bekomm ich eine Fehlermeldung. Kennt jemand die genaue Reihenfolge der Parameter für die OLE Schnittstelle?

Gruß Jack


Andreas Schilling - Do 18.03.10 14:27

Quelletext und Fehlermeldung wären interessant. Da ich nur Excel2000 habe kennt das Saveas nur bis xlExcel7. Alle fehlenden Parameter mit emptyparam auffüllen. Getestet ist es nicht, aber beim Kompilieren gibt es keine Fehlermeldung.

Delphi-Quelltext
1:
ActiveWorkbook.SaveAs('C:\test.xls', xlExcel7, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);                    


jackle32 - Fr 19.03.10 21:35

Hallo zusammen,

also wenn ich den Code wie oben eingebe findet er "xlExcel7" nicht. Ich hab mal eine Tabelle gefunden, in der diesen Platzhaltern eine Nummer zugeordnet ist. Wenn ich dann die Nummer reinschreibe, bekomm ich immer einen Fehler von der SaveAs funktion. (Text: Project XXX.exe raised exception class EOleException with message 'SaveAs method of Workbook class failed'. Process stopped. Use Step or Run to continue).

Gruß,

Jack


jackle32 - Sa 20.03.10 22:22

Keiner eine Idee?


jackle32 - Mo 22.03.10 23:45

Nochmal ein Anlauf vielleicht ist ja jetzt jemand da der sich damit auskennt.

Grüße,

Jack


JoelH - Di 23.03.10 10:09

Wie sieht denn deine Codezeile denn jetzt genau aus? Ohne genauen Code kann man das schwerlich nachvollziehen.

Probier mal

Delphi-Quelltext
1:
  ActiveWorkbook.SaveAs ('C:\Documents and Settings\tchristgau\Desktop\Book1.xls'56'''', False ,False)                    


siehe dazu

http://www.rondebruin.nl/saveas.htm


jackle32 - Di 23.03.10 13:43

Okay,

56 war der richtige Wert, hatte vorher von einer anderen Quelle eine Wert von 43.

Besten Dank!

Gruß Jack

P.S.

Meine momentan entgültige Version sieht so aus:


Delphi-Quelltext
1:
ActiveWorkbook.SaveAs('C:\test.xls'56, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);