Import aus Exel

19. Februar 2007 17:00

Hallo,

ich möchte gerne aus einer Vorhandenen Exeldatei mit mehren Cheets Sachen Importieren.
Es müssen aus verschiedenen Ceets unterschiedliche Felder Importiert werden.
Sprich Tabelle1 Feld A1 und B2
Tabelle2 Feld C3:E3
usw.

Leider Funktioniert das bei mir nicht wirklich.

Code:
QuantNotificHeader.INIT;
QuantNotificHeader."No." := '';
QuantNotificHeader.INSERT(TRUE);

//CREATE(xlApp);
//xlBook := xlApp.Workbooks.Add(-4167);
//xlSheet := xlApp.ActiveSheet;

xlSheet.Name('Tabelle1');
xlSheet.Activate;

QuantNotificHeader.VALIDATE("Customer No.",xlSheet.Range('A1').Value);
QuantNotificHeader.VALIDATE("Notification Year",xlSheet.Range('B2').Value);

xlSheet.Name('Tabelle2');
xlSheet.Activate;

QuantNotificLine.INIT;
QuantNotificLine."Notification No." := '';
QuantNotificLine.INSERT(TRUE);

QuantNotificLine.VALIDATE("Line No.", xlSheet.Range('C3:E3').Value);
QuantNotificLine.VALIDATE(Quantity,Quant);


[hr][Edit: Programmcode der Lesbarkeit halber in [code]-Blöcke gepackt. Gruß, Timo Lässer]

19. Februar 2007 19:27

Hi Silver,

bei deinem Code vermisse ich so Punkte wie das Öffnen der Excel-Datei, etc. Deshalb hier wie ich es machen würde.

Drei Variablen anlegen:
Code:
Name   DataType   Subtype   Length
XlApp   Automation   Unknown Automation Server.Application   
XlWrkBk   Automation   Unknown Automation Server.Workbook   
XlWrkshts   Automation   Unknown Automation Server._Worksheet


Dann ersteinmal mit den folgenden Code beginnen:
Code:
IF NOT CREATE(XlApp,TRUE) THEN
  ERROR('Excel wurde nicht gefunden.');

XlApp.Workbooks.Open('C:\Mappe1.xls');
XlWrkBk := XlApp.ActiveWorkbook;


Anschließend die erste Tabelle (Sheet) öffnen und Daten lesen:
Code:
XlWrkshts := XlWrkBk.Worksheets.Item('Tabelle1');
QuantNotificHeader.VALIDATE("Customer No.",XlWrkshts.Range('A1').Value);
QuantNotificHeader.VALIDATE("Notification Year",XlWrkshts.Range('B2').Value);


Dann die zweite Tabelle öffnen und lesen:
Code:
XlWrkshts := XlWrkBk.Worksheets.Item('Tabelle2');
QuantNotificLine.VALIDATE("Line No.",XlWrkshts.Range('C3:E3').Value);
QuantNotificLine.VALIDATE(Quantity,Quant);


Zum Schluß die geöffnete Exceldatei und die eigentliche Excel-Anwendung schließen:
Code:
XlApp.Workbooks.Close;
CLEAR(XlApp);


Bei meinem Test gerade hat es so funktioniert.

Gruß, Marc

23. März 2007 11:38

Wie funktioniert das mit den Variablen die du anlegst? Bei mir kommen da Fehler wie: "Unknown Automation wurde weder als GUID noch als Automation Server erkannt. Prüfen sie..."

Ich habe noch nie was aus Excel importiert und wollte das anhand deines Beitrags probieren...

23. März 2007 12:24

Hi Steev,

hier nochmal die Variablen die ich angelegt habe.

Code:
Name   DataType   Subtype   Length
XlApp   Automation   'Microsoft Excel 11.0 Object Library'.Application   
XlWrkSht   Automation   'Microsoft Excel 11.0 Object Library'.Worksheet   
XlWrkshts   Automation   'Microsoft Excel 11.0 Object Library'._Worksheet


Gruß, Marc