Import aus Excel

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Import aus Excel

Beitrag von Rolf Ramacher »

Halllo,

ich möchte Daten aus Excel in eine Dbf übernehmen. Aber ich erhalten die Fehlermeldung

oSheetDat - unbekannte variable

Code: Alles auswählen

#include "activex.ch"
#include "excel.ch"

Function ExcelImport(oParent)
  LOCAL oExcel, aExcelWerte:={}, cFile:=""

	cFile:=FileDlg(oParent)
	If empty(cFile)
		Return Nil
	Endif

  // Erzeugen eines "Excel.Application"-Objektes
  oExcel := CreateObject("Excel.Application")
  IF Empty( oExcel )
    MsgBox( "Excel ist nicht installiert" )
    RETURN Nil
  ENDIF

  // Vermeiden von Nachrichten wie "Die Datei 
  // existiert bereits". Sicherstellen, dass 
  // die Excel-Anwendung sichtbar ist.
  oExcel:DisplayAlerts := .F.
  oExcel:visible       := .T.
aExcelWerte:=oSheetDat:Range("A2:D54")
msgbox(var2lchar(aExcelWerte))
Return Nil
Den HInweis aExcelWerte:=oSheetDat:Range("A2:D54") hatte ich hier schon gefunden. Ich gehe mal davon aus, daß ein array zurückgegeben wird. A2 D54 sind vermutlich die Zellen
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Martin Altmann »

Hallo Rolf,
ist doch auch kein Wunder - oSheetDat hast Du doch nirgendwo belegt!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Tom »

Ist ja auch kein Wunder, "oSheetDat" wird nirgendwo definiert, außerdem öffnest Du nirgendwo eine Exceldatei. Du müsstest nach der Initialisierung des Excel-Objekts mindestens so etwas machen:

Code: Alles auswählen

oBook := oExcel:Workbooks:Open(cMeineDatei)
oSheetDat := oBook:Sheets(cMeinWorkSheet)
oSheetDat:Select()
Herzlich,
Tom
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Rolf Ramacher »

Hi Tom

ja hast Recht. Dieses ist für mich noch ein bischen Neuland. aber ich bekomme jetzt eine Fehlereldung
Fehler bei Arrayindizierung

Code: Alles auswählen

	oBook := oExcel:Workbooks:Open(cFile)
	oSheetDat := oBook:Sheets(cMeinWorkSheet)
	oSheetDat:Select()
und zwar bei oSheetDat:=obook:Sheets(cMeinWorkSheet(

cMeinWorksheet:="" habe ich so als Localvariable definiert - Ist dies falsch oder muß da noch etwas anderes eingetragen werdnen ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Tom »

Hallo, Rolf.

"cMeinWorkSheet" wäre der Name des Arbeitsblattes innerhalb der Excel-Datei. Wenn nichts anderes definiert ist, wäre das normalerweise "Tabelle1". Einfach mal in die zu öffnende Datei schauen und nachsehen, wie die Arbeitsblätter heißen. Wenn es keine gibt, musst Du anders vorgehen.
Herzlich,
Tom
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Rolf Ramacher »

Hi Tom,

alles klar. Mit Tabelle1 erhalte ich keine Fehlermeldung. Aber wenn aExcelwerte() anzeigen lasse steht in der msgbox(automatic object) ??? ich dachte

Code: Alles auswählen

oSheetDat:Range("A2:G500")
liefert die Daten der entsprechenden Felder in einem Array zurück. oder wie komme ich an die daten dran ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Tom »

Hallo, Rolf.

:Range liefert ein Range-Objekt zurück, kein Array:

Code: Alles auswählen

oRange := oSheetDat:Range("A2:G500")
oRange:Select()
? oRange:Value
Herzlich,
Tom
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Rolf Ramacher »

Hi Tom,

danke für den Tipp funktioniert. Aber hierzu gleich eine Frage. Weißt du wo man nachlesen kann, welche activex-Befehle es zu Excel/word gibt und welche Funktionen diese haben. Das denke ich würde nicht nur mir auf Dauer die Arbeit erleichtern.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von brandelh »

Hi,

dazu gibt es word und excel VBA Hilfedateien, die genauen Namen wurden schon gepostet.
Eventuell müssen die erst nachinstalliert werden, bei Office 2003 ...

C:\Programme\Microsoft Office\OFFICE11\1031\VBAXL10.CHM - Excel
C:\Programme\Microsoft Office\OFFICE11\1031\VBAWD10.CHM - Word
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Rolf Ramacher »

Hallo zusammen,

etwas seltsames habe ich noch hierzu. Die Exceltabelle beinhaltet 7 spalten - A bis G
Aber im Array haben manche 8 oder sogar 9 spalten. an der 6. position - eigentlich PLZ und an der 8. pos. nach PLZ vor Ort
das verstehe ich nicht. ??
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 389
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Armin »

Hallo Rolf,
Weißt du wo man nachlesen kann, welche activex-Befehle es zu Excel/word gibt und welche Funktionen diese haben. Das denke ich würde
nicht nur mir auf Dauer die Arbeit erleichtern.
wahrscheinlich ist Dir das schon bekannt...
Einfach Makro aufzeichnen - dann kannst Du das manuell machen, was nachher automatisch gehen soll - das Makro beinhaltet die entsprechenden Funktionen, die Du so auch in Xbase verwenden kannst.

Gruß, Armin
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Import aus Excel

Beitrag von Rolf Ramacher »

Hi Armin,

werde ich mal ausprobieren.

P.S. die Anzeige (msgbox(var2lchar(aExcelwerte)) - gab mir falsche Informationen zurück. fügte vor der PLZ 000000 dazu - warum auch immer ? Hat dies jemand auch schon beobachtet ??
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Import aus Excel

Beitrag von AUGE_OHR »

Rolf Ramacher hat geschrieben:ich möchte Daten aus Excel in eine Dbf übernehmen. Aber ich erhalten die Fehlermeldung
siehe dir doch mal http://www.xbaseforum.de/viewtopic.php?f=16&t=3622 an
gruss by OHR
Jimmy
Antworten