Frage zu Excel Buffer

12. September 2011 16:18

Hallo,

ich habe eine Frage zum Auslesen von Werten aus einer Exceltabelle?
Wie komme ich in der Funktion Readsheet in der Tabelle 370 Excelbuffer an den Wert "XlWorkSheet.Range(xlColID + xlRowID).Value" ran, wenn dieser mehr als 1024 Zeichen umfasst. Dieser lässt sich dann ja auch nicht mehr mit Format(XlWorkSheet.Range(xlColID + xlRowID).Value) in einen String umwandeln. Ich würde diesen Wert gerne in eine Textdatei schreiben. Ist so etwas überhaupt möglich?

Vielen Dank im voraus.

Viele Grüße
Jens

Re: Frage zu Excel Buffer

12. September 2011 16:53

jsch hat geschrieben:Wie komme ich in der Funktion Readsheet in der Tabelle 370 Excelbuffer an den Wert "XlWorkSheet.Range(xlColID + xlRowID).Value" ran, wenn dieser mehr als 1024 Zeichen umfasst.


in einen outstream schreiben?

Re: Frage zu Excel Buffer

12. September 2011 16:57

Genau an der Stelle gibt es mehrere Fallstricke, z.B. nicht aufgelöste Formeln mag der Excel-Buffer dort auch nicht. Was steht denn in dem Feld? Ich meine, Excel ist ja eigentlich kein Word und daher für lange Texte auch nur bedingt geeignet. Daher würde ich als erstes versuchen bei der Erstellung der Exceldatei schon darauf zu achten.
Ansonsten versuchen das Ganze vorab außerhalb von NAV zu konvertieren. Dann wird es allerdings sofort wieder deutlich komplizierter.

Re: Frage zu Excel Buffer

13. September 2011 10:55

Vielen Dank für eure Antworten.
Das mit dem outstream habe ich schon versucht. Leider bin ich da nicht so richtig weitergekommen.
Das Problem ist, dass ich den Wert aus "XlWorkSheet.Range(xlColID + xlRowID).Value" nicht in einen outstream umgewandelt bekomme.

Meine Versuche:

Inputfile.CREATE('c:\test.txt');
Inputfile.CREATEOUTSTREAM(OutStream);


OutStream.WRITE(XlWorkSheet.Range(xlColID + xlRowID).Value);
erzeugt diese Fehlermeldung: "Sie verwenden einen ungültigen Typ für diese Funktion"

OutStream.WRITE(format(XlWorkSheet.Range(xlColID + xlRowID).Value));
erzeugt diese Fehlermeldung: "Die Länge des Textstrings überschreitet die Größe des Zeichenpuffers"

Mit OutStream.WRITETEXT komme ich auch nicht weiter. Und auch die Umwandlung in eine BigText-Variabel hat nicht so richtig funktioniert.

Gibt es noch andere Möglichkeiten?

Re: Frage zu Excel Buffer

14. September 2011 09:58

Hallo,


Mach dir doch eine VAriable vom Typ Text (Länge 1024) und lies es ertmal da ein. Wenn die Länge größer ist dann Splitte doch den Text und fange eine neue Zeile im Textdokument an.


Gruß
Aydin

Re: Frage zu Excel Buffer

14. September 2011 14:33

Hallo,

benutze mal XlWorkSheet.Range(xlColID + xlRowID).Text statt XlWorkSheet.Range(xlColID + xlRowID).Value , dann kannst du auch mit Copystr arbeiten.

Gruß, Fiddi

Re: Frage zu Excel Buffer

15. September 2011 21:27

Hallo,

das mit XlWorkSheet.Range(xlColID + xlRowID).Text habe ich ausprobiert.
Leider enthält dieser Wert nur die ersten 1024 Zeichen.

Danke und Gruß
Jens

Re: Frage zu Excel Buffer

16. September 2011 11:15

Nur BigText kann mehr als 1024 Zeichen halten.

Re: Frage zu Excel Buffer

17. September 2011 15:43

Wie kann ich den Inhalt von XlWorkSheet.Range(xlColID + xlRowID).Value in eine BigText-Variable übertragen?

Re: Frage zu Excel Buffer

22. September 2011 16:55

entschuldigt bitte die kurze unterbrechung bzw zwischenfrage

wie kommt ihr auf 1024 zeichen?
der text - datentyp in nav kann doch nur 250 zeichen verwalten ...alles andere müsste ja in bigtext rein und dann mit copystr verarbeitet werden, oder täusche ich mich da jetzt?

Re: Frage zu Excel Buffer

22. September 2011 17:40

sweikelt hat geschrieben:entschuldigt bitte die kurze unterbrechung bzw zwischenfrage

wie kommt ihr auf 1024 zeichen?
der text - datentyp in nav kann doch nur 250 zeichen verwalten ...alles andere müsste ja in bigtext rein und dann mit copystr verarbeitet werden, oder täusche ich mich da jetzt?


Für Tabellenfelder vom Typ "Text" stimmt das mit den 250 Zeichen. Bei Variablen hast du bis zu 1024 Zeichen.

Re: Frage zu Excel Buffer

23. September 2011 09:32

@meto, jap, habs dann gestern auch noch rausgefunden :D .... man lernt nie aus

jsch hat geschrieben:Wie kann ich den Inhalt von XlWorkSheet.Range(xlColID + xlRowID).Value in eine BigText-Variable übertragen?



Code:
BigText.ADDTEXT(XlWorkSheet.Range(xlColID + xlRowID))


mein problem wäre jetzt folgendes:

ich hab einen bigtext mit einem string gefüllt und möchte nun den string in eine text-variable von 250 zeichen speichern (falls bigtext zu lang is, dann einfach abschneiden), aber i-wie funktioniert das mit dem abschneiden bzw speichern nicht :(

hat jemand ne idee? => mit der GETSUBTEXT Function funktioniert es ja nicht, da mir dort dann nen integer wiedergegeben wird :(

Re: Frage zu Excel Buffer

23. September 2011 11:19

Hallo,


das geht mit der "CopySTR" Funktion. Vielleicht brauchst du noch eine Hilfsvariable, falls du mit deinen Variablen nicht zurecht kommst:-)

http://www.navision24.de/befehle/copystr.html


Gruß
Aydin

Re: Frage zu Excel Buffer

23. September 2011 12:43

sweikelt hat geschrieben:hat jemand ne idee? => mit der GETSUBTEXT Function funktioniert es ja nicht, da mir dort dann nen integer wiedergegeben wird :(

Der Returnwert ist nicht der einzige Weg, um von einer Funktion Daten zu erhalten.
Schau Dir mal den Satz in der Hilfe bzgl. des ersten Parameters an.