aus NAV Artikeldatenblatt in Word anlegen

3. April 2008 15:52

Hallo zusammen,

ich möchte gerne aus NAVISION 4.0 SP3 ein Artikeldatenblatt in Word anlegen. Die reinen Textinformationen bekomme ich wohl hin.
Würde das mit den Textmarken machen, die ich aus Navision fülle.
Wie mache ich das aber mit Zeichnungen oder Bilder? Die Daten sind nicht in der DB eingebettet, sondern liegen separat auf dem Server.
Der Dateiname mit Verzeichnis liegt mir in einer TAB in folgendem Format vor
file:\\SERVER\VERZEICHNIS\BILD1.gif
(Das zu ändern wäre natürlich auch möglich.)
Aber wie bekomme ich Word dazu das jeweilige Bild / Zng in einem bestimmten Bereich anzuzeigen.

Hat dazu jemand einen Idee???
Wäre für jeden Tipp und Anregung dankbar

Danke schon mal

Roland

7. April 2008 19:07

Hallo Robert,

anbei ein Stück Quelltext:

Code:
wdBookmark := -1;
FilenameOfDocument := 'C:\datenbanken\Test.DOC';    //Vollständiger Name des Word-Dokumentes
FilenameOfPicture := 'C:\Datenbanken\FMB.BMP';      //Vollständiger Name der Bild-datei
NameOfBookmark := 'M1';                             //Name der Textmarke, bei der Bild eingefügt werden soll
CREATE(wrdApp);
wrdApp.Visible := TRUE;
wrdDocuments := wrdApp.Documents;
wrdDocument := wrdDocuments.Open(FilenameOfDocument);
wrdBookmarks := wrdDocument.Bookmarks;
wrdBookmark := wrdBookmarks.Item(NameOfBookmark);
wrdBookmark.Select;
wrdSelection := wrdApp.Selection;
wrdInlineShapes := wrdSelection.InlineShapes;
wrdInlineShape := wrdInlineShapes.AddPicture(FilenameOfPicture);


und die Definitionen:
Name DataType Subtype Length
wrdApp Automation 'Microsoft Word 9.0 Object Library'.Application
wrdDocuments Automation 'Microsoft Word 9.0 Object Library'.Documents
wrdDocument Automation 'Microsoft Word 9.0 Object Library'.Document
wrdBookmarks Automation 'Microsoft Word 9.0 Object Library'.Bookmarks
wrdBookmark Automation 'Microsoft Word 9.0 Object Library'.Bookmark
wrdSelection Automation 'Microsoft Word 9.0 Object Library'.Selection
wrdInlineShapes Automation 'Microsoft Word 9.0 Object Library'.InlineShapes
wrdInlineShape Automation 'Microsoft Word 9.0 Object Library'.InlineShape
wdBookmark Integer
FilenameOfDocument Text 250
FilenameOfPicture Text 250
NameOfBookmark Text 30
I Integer

Damit wird einer Textmarke ein Bild aus einer datei hinzugefügt.
Auf Prüfungen usw. wurde verzichtet.

Ich hoffe, Du kannst was damit anfangen.

Viele Grüsse aus Leipzig von
FraMi.

EDIT : Bitte Codetags benutzen (Rautensymbol) Gruß Kai

5. Mai 2008 13:36

Hallo Frank,

sorry, dass ich mich erst jetzt melde. Konnte mich aber erst jetzt wieder um diese Problem kümmern.

Also mit Deinem CODE bin ich weiter gekommen. Die Grafik wird jetzt angezeigt.
Folgende Frage hab ich aber noch:

1# Um das Worddokument vor dem User zu schützen möchte ich es als Vorlage *.dot öffnen.
Wenn ich folgende Zeile hinzu füge werden beide geöffnet dot und doc.

Code:
WordDoc := WordApp.Documents.Add(TemplateName);



2# Ich möchte noch mehr Informationen in das Worddokument übergeben. kann man auch Textbausteine vom Artikel einfügen zB in eine Tabelle??
Die Anzahl der Textbausteinzeilen kann ja variieren.


3# sicherlich ist es auch möglich die Textmarken eleganter zu füllen als ich das mit WordRange mache.


Vielleicht hast Du mir noch einen Tipp


Viele Grüsse

Roland




kurz zur Info:

der Grafikname muss in folgendes Format gewandelt werden!!

\\SERVER\PFAD\PFAD\BILD.GIF

muss

\\SERVER\\PFAD\\PFAD\\BILD.GIF

komischerweise nur die Pfad \ nicht die vom \\ SERVER

5. Mai 2008 13:37

Hier mal der komplette Code:


Code:
TemplateName := '\\Navision01\DATA\DOT\Artikeldatenblatt.dot';
Item_ := Rec;
Item_.SETRECFILTER;
NameOfBookmark := 'Artikelnummer';

PDM.SETRANGE(ArtNr, "No.");
IF PDM.FIND('-') THEN
  FilenameOfPicture := PDM.Grafikname2
ELSE
  ERROR('Keine Zeichnung vorhanden!');

CLEAR(WordApp);
wdBookmark := -1;
CREATE(WordApp);
WordApp.Visible := TRUE;
WordDocs := WordApp.Documents;
WordDoc := WordDocs.Open(TemplateName);
WordBookmarks := WordDoc.Bookmarks;
WordBookmark := WordBookmarks.Item(NameOfBookmark);
WordBookmark.Select;
wordSelection := WordApp.Selection;
wordInlineShapes := wordSelection.InlineShapes;
wordInlineShape := wordInlineShapes.AddPicture(FilenameOfPicture);

WordDoc := WordApp.Documents.Add(TemplateName);

IF ISCLEAR(WordApp) THEN
  IF NOT CREATE(WordApp, FALSE) THEN
    ERROR('Konnte keine Word-Instanz erstellen!');

IF NOT EXISTS(TemplateName) THEN
  ERROR('Wordvorlage %1 existiert nicht!', TemplateName);

//Füllen der Textmarken Text01 mit 'Artiklenummer'
WordRange := WordApp.ActiveDocument.Fields.Item(1).Result;
WordRange.Text := Item_."No.";

//Füllen der Textmarken Text02 mit 'Benennung'
WordRange := WordApp.ActiveDocument.Fields.Item(2).Result;
WordRange.Text := Item_.Description;

//Füllen der Textmarken Text02 mit 'Benennung2'
WordRange := WordApp.ActiveDocument.Fields.Item(3).Result;
WordRange.Text := Item_."Description 2";

3. Juli 2008 19:51

Hallo Roland,
Sorry das ich jetzt erst mich melde - habe ea verschwitzt.
Ich weiß nicht, ob Du Deine Probleme schon bereinigt hast.
Deshalb schreibe ich nur zu Deinem Problem 1. Du schreibst, dass sowohl DOT als auch DOC geöffnet werden. Laut dem Programmcode ist das correkt, Du ast vergessen, die DOT zu schließen bevor Du die DOC addest

Wenn Du noch Fragen hast, ich passe jetzt besser auf.

Viele Grüsse aus Leipzig von
Frank

3. Juli 2008 22:23

Leipsch? Bei welchen Partner arbeitest du denn?

7. Juli 2008 09:02

garak,
Gegenfrage: "Bei wem arbeitest Du?"

Re: aus NAV Artikeldatenblatt in Word anlegen

14. September 2011 21:26

Hallo,

klappt das ganze auch irgendwie direkt mit Blob-Feldern aus der DB in Word einlesen oder muss ich diese zunächst temporär irgendwo im Dateisystem speichern?