Excel Export mit Report in Verzeichnis / mehrere Sheets

6. Oktober 2006 09:13

Hallo,

Ich möchte auf Basis des Reports wie er in Navision24.de beschrieben wird ein Excel erstellen.

Link:
Navision24 - Echte Excel Tabellen erzeugen

Jedoch möchte ich nicht das ein Excel erzeugt wird
Code:
ExcelBuffer.GiveUserControl();
sondern ich möchte wie wie bei einem Dataport das Excel in einem Verzeichnis speichern können - ist das möglich?

Und noch ein große Bitte - kann jemand ein Template hochladen, in welchem mehrere Sheets gefüllt werden? :-P

DANKE
Jürgen :-)

[Code-Tag korrigiert.]
Gruß, Marc Teuber
MSDynamics.de-Team

6. Oktober 2006 09:23

Hast du mal gesucht im Forum? Es gibt eine Diskussion genau darüber unter Excel mit mehreren Sheets

(inkl. Codebeispielen usw.)

6. Oktober 2006 10:02

Hallo Jürgen,

die Tabelle 370 "Excel Buffer" bietet vom Standard her keine Möglichkeit. Erstelle dort einfach eine neue Funktion mit der Bezeichnung "SaveAs" und dem Parameter "FileName" (Text 250).

Der Code der Funktion müsste ungefähr so aussehen:
Code:
IF XlWrkBk.FullName = FileName THEN
  XlWrkBk.Save
ELSE
  XlWrkBk.SaveAs(FileName);


Der Code ist ungetestet.

Gruß, Marc

Excel Datei speichern

12. Oktober 2006 12:09

Zu dem anderen Thema gibt es bereits etwas von mir.

Hier mal ein Beispiel für das Umwandeln einer CSV-Datei zu einer Excel-Datei mit "speichern"und das 2. Beispiel ist "nur speichern" einer Datei.

Gruß tom


Code:
Name   DataType   Subtype   Length
Excel   Automation   Unknown Automation Server.Application   
Book   Automation   Unknown Automation Server.Workbook   
Range   Automation   Unknown Automation Server.Range   
Sheet   Automation   Unknown Automation Server.Worksheet   

IF NOT VARIABLEACTIVE(Excel) THEN
  CREATE(Excel,FALSE);
Excel.Visible(TRUE);
ExcelPathFileName := ExcelPath+ExcelFileName;
Excel.Workbooks.Open(ExcelPathFileName);
ExcelFileName := 'Test.xls';
ExcelPathFileName := ExcelPath+ExcelFileName;
OK := ERASE(ExcelPathFileName);
Book := Excel.ActiveWorkbook;
Book.SaveAs(ExcelPathFileName,39);

//oder so

NewFilename := ExcelPath+'test2'.xls';
Sheet.SaveAs(NewFilename);
:-) :-)

2. August 2007 15:25

Marc Teuber hat geschrieben:Hallo Jürgen,

die Tabelle 370 "Excel Buffer" bietet vom Standard her keine Möglichkeit. Erstelle dort einfach eine neue Funktion mit der Bezeichnung "SaveAs" und dem Parameter "FileName" (Text 250).

Der Code der Funktion müsste ungefähr so aussehen:
Code:
IF XlWrkBk.FullName = FileName THEN
  XlWrkBk.Save
ELSE
  XlWrkBk.SaveAs(FileName);


Der Code ist ungetestet.

Gruß, Marc


Hallo Marc,

ich habe diese Funktion gerade in die Tabelle Excel-Buffer integriert und möchte für evtl. interessierte Benutzer ergänzen, dass man im Anschluss auch noch ein

Code:
XlApp.Quit;


schreiben sollte, da sonst die Excel-Instanz geöffnet bleibt und die Datei nicht frei gibt.

2. August 2007 16:56

Guter Hinweis.

Das Problem hatte ich damals beim Testen auch oft und hatte im Windows Task-Manager unzählige Excel-Prozesse laufen...

Gruß, Marc

5. März 2008 13:04

Hallo zusammen,

ich sitze leider immer noch an diesem Problem.
Also soweit funktioniert er alles, aber er schließt Excel nicht wieder und wenn ich den Befehl
XlApp.Quit; benutze, bekomme ich immer eine Fehlermeldung.

Ich wäre für eure Hilfe sehr dankbar.

Gruß
Claire

5. März 2008 13:27

Quit sollte eigentlich klappen.
Eventuell sollte man vorher speichern.

Code:
Sheet.SaveAs(NewFilename);
Excel.Quit;


Gruss Tom

5. März 2008 16:22

Danke,
nur mache ich es schon so und bekomme immer die Fehlermeldung, dass für diese Variable keine Instanz erstellt wurde, obwohl dieser Befehl in der Tabelle Excelbuffer, ja öfters schon benutzt wurde.

Bin da mittlerweile sehr ratlos.

Gruß
Claire