Excel-Import Report funktioniert nicht

9. August 2007 14:05

Hallo liebe Forengemeinde,

ich habe einen Report programmiert der Daten aus Excel nach Navision importieren soll. Dazu verwende ich die Tabelle "Excel Buffer".
In der Reqestform lasse ich den Benutzer die xls und das Tabelleenblatt auswählen.
Diese Daten gebe ich dann an diese Methoden weiter:
Code:
ExcelBuffer.OpenBook(FileName, SheetName);
ExcelBuffer.ReadSheet;

Wenn ich den Report jetzt ausführe dann bringt er folgende Fehlermeldung.

Diese Meldung ist für C/AL-Programmierer:

Dieser Datentyp wird von C/SIDE nicht unterstützt.
Sie haben Zugriff auf Daten der folgenden Datentypen:
V_VOID, VT_I2, VTI_4, VT_R4, VT_R8, VT_CY, VT_DATE, VT_BSTR und VT_BOOL

Laut Debuger bricht er innerhalb der Methode ReadSheet ab. Aufgrund der Fehlermeldung habe ich dann in der Tabelle alle Felder auf Standard gesetzt. Aber der Fehler kommt immer noch.

Vieleicht kann mir jemand helfen

9. August 2007 21:24

Hallo Steev,

habe das gerade getestet. Leider erhalte ich den Fehler nicht. Welche Zeile in der Funktion ReadSheet produziert den Fehler? Kannst du das herausbekommen?

Gibt es "Besonderheiten" in deiner Exceldatei wie Formartierungen, etc.? Hast du mal versucht, die Exceldatei vom Umfang her zu reduzieren und sie dann anschließend wieder importiert? Vielleicht kann man so die Ursache nach und nach finden.

Welche 4er Version von Navision und welche Excelversion nutzt du denn?

Gruß, Marc

10. August 2007 07:49

Ich benutzer Navision 400SP3 und bei allen Excel-Tabellen funktioniert es ja, nur bei der die der Kunde mir gegeben hat nicht.

Seine Tabelle ist sehr farbig formatiert, auf jedem Feld ist eine Formel die sich auf andere Tabellenblätter, die Feldart ist unterschiedlich (Zahl,Text,Normal).
Aber das alle sind Dinge die Navision eigendlich kann.

Und daran stört sich Navision anscheinend auch nicht weil ich alle Formatierungen schon weggenommen habe und nur die Feldformeln gelassen habe, mir ist das wirklich ein Rätsel.

Leider kann ich keine andere Tabelle benutzen weil ich diese vom Kunden festgelegt bekommen habe.

10. August 2007 08:36

Vielleicht kannst du, nachdem du bereits alle Formatierungen entfernt hast, noch weitere Dinge rausschmeißen. Wie wäre es, wenn du alles markierst, kopierst und anschließend in einem neuen Tabellenblatt nur die Feldwerte einfügst. Dann würde ich versuchen, dieses neue Tabellenblatt mit Navision zu importieren. Sonst fällt mir nix mehr ein.

10. August 2007 10:29

Das ist es ja gerade, der Kunde will leider keine Tabelle in die er die Werte eintragen muss, bzw in die man die Werte eintragen muss. Er ein Excel-Dokument in dem mehrere Blätter sind mit denen er z.B. seine Berechnung macht.

Das erste Tabellenblatt ist also eine automatische Berechnung der Werte in den anderen Tabellenblättern. Und genau diese Werte sollen in Navision importiert werden.

Man kann leider auch nicht die anderen Tabellenblätter importiernen...

10. August 2007 11:38

Steev hat geschrieben:Das ist es ja gerade, der Kunde will leider keine Tabelle in die er die Werte eintragen muss, bzw in die man die Werte eintragen muss. Er ein Excel-Dokument in dem mehrere Blätter sind mit denen er z.B. seine Berechnung macht.

Das ist mir schon klar. Nur wollte ich mit der Methode erreichen, dass man den Fehler eingrenzen kann.

Fakt ist, dass du eine Exceltabelle hast die aus irgendeinen Grund beim Importieren einen Fehler verursacht. Nun gilt es, die Exceltabelle nach und nach zu verkleinen (Spalten entfernen (oder evtl. Zeilen), Formatierungen entfernen, Formeln entfernen, etc.). Nach jedem Schritt versuchst du die Exceldatei zu importieren. Irgendwann (hoffentlich) wird sie sich importieren lassen und du weißt dann, wo der Fehler steckt, weil du vorher aus der Exceltabelle etwas entfernt hast, was den Fehler verursacht. So würde ich an die Sache rangehen.

Gruß, Marc
Zuletzt geändert von Marc Teuber am 11. August 2007 22:14, insgesamt 1-mal geändert.

10. August 2007 16:50

Dankeschön, ich werde es mal probieren...

18. Juni 2008 14:09

Ich weiß ja nicht, ob dieses Problem noch aktuell ist, aber ich habe das gleiche. Durch Debuggen habe ich jetzt herausgefunden, dass es Felder mit Berechnungen sind, in denen in Excel #BEZUG oder #WERT sind, die zu diesem Fehler führen. Da ich bei meinem Kunden nicht die Möglichkeit habe diese Blätter zu ändern (Wir reden hier über ca. 200 xls-Files mit je 3 - x Blättern), wollte ich im ExcelBuffer vorher den Type abfangen. Frage nur: Welche Method oder Property von xlRange liefert mir den Typ?!?