Seite 1 von 1

Visual Basic Code in Navision: Parameter Autofitbehavior

Verfasst: 17. Januar 2008 16:01
von T0M
Hallo will einen Report nach Word exportieren. Dort will ich ihn in einer Tabelle anzeigen. Von Navision aus eine Tabelle aufzubauen ist kein Problem. Jedoch beim Füllen dieser, steh ich vor einem Problem:

Ich möchte diesen VB-Code in Navision ausführen:

Code:
Selection.MoveRight Unit:=wdCell


Wenn ich das so

Code:
WdApp.Selection.MoveRight(wdcell);


in Navison ausführen will kommt eine Fehlermeldung beim kompilieren.
Das Problem ist dieses "wdcell" - wie muss ich das schreiben, damit das Navision annimmt???

Verfasst: 17. Januar 2008 16:17
von MrBurns
Das Problem ist dieses "wdcell" - wie muss ich das schreiben, damit das Navision annimmt???


wdCell wird vermutlich eine separat zu instatiierende Automation-Variable sein und muss deklariert werden.

Re: Visual Basic Code in Navision: Selection.MoveRight

Verfasst: 17. Januar 2008 16:24
von Marc Teuber
Hi Tim!

T0M hat geschrieben:wie muss ich das schreiben, damit das Navision annimmt???


Wie MrBurns schon geschrieben hat, muss wdcell als Variable vom Typ Automation angelegt werden (siehe Abbildung).

Gruß, Marc

Verfasst: 17. Januar 2008 16:33
von feri
-- edit --
oh, hat sich bereits erledigt :oops:

gruesse
feri

Verfasst: 17. Januar 2008 17:47
von T0M
Danke für die schnelle Hilfe. Das klappt nun soweit.
Nun hab ich noch ein kleines Problem:
Wie kann ich eine Tabelle von Navison erstellen mit der Eigenschaft "Inhalt automatisch anpassen"

Ich hab mit einem Makro eine Tabelle erstellt und danach die Eigenschaft bestimmt. Das Makro spuckt mir den VBCode aus:

Code:
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
        5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    With Selection.Tables(1)
        If .Style <> "Tabellengitternetz" Then
            .Style = "Tabellengitternetz"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False
    End With
    Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)


Also mein Problem ist der Tabelle diesen Parameter "wdAutoFitContent" mitzugeben.

Mein bisheriger CAL Code zur Erstellung der Tabelle ohne diese Eigenschaft:

Code:
WdRange := WdApp.Selection.Range;
WdApp.ActiveDocument.Tables.Add(WdRange,PAR_INT_Row,PAR_INT_Column);
WdApp.Selection.Style := 'Tabellengitternetz';

Verfasst: 17. Januar 2008 18:43
von Kowa
[Beitrag aus dem Forum Dynamics NAV 5.xx nach Software-Integration verschoben.]

Gruß, Kai
MSDynamics.de-Team

Verfasst: 17. Januar 2008 19:24
von MrBurns
Parameter "wdAutoFitContent" mitzugeben.


Der "Parameter" ist eine Konstante.
In der MSDN http://msdn2.microsoft.com/de-de/librar ... able(VS.80).aspx steht folgendes:
AutoFitBehavior
Legt die AutoAnpassen-Regeln dafür fest, wie Word die Größe einer Tabelle bestimmt. Kann eine der folgenden WdAutoFitBehavior-Konstanten sein: wdAutoFitContent, wdAutoFitFixed oder wdAutoFitWindow. Wenn DefaultTableBehaviorwdWord8TableBehavior ist, wird dieses Argument ignoriert.

und
Visual Basic Code kopieren
Dim wdAutoFitBehavior1 As WdAutoFitBehavior = WdAutoFitBehavior.wdAutoFitContent


In Selection.Tables(1).AutoFitBehavior (wdAutoFitContent) muss ein weiterer Automation eingegeben werden.

Verfasst: 18. Januar 2008 10:44
von feri
hi,

hier ist eine Liste saemtlicher Konstanten fuer Word.

Wird eine Konstante in einer Funktion erwartet, musst du in Navision den numerischen Wert davon verwenden, da Navision die Konstanten nicht kennt.

Gruesse
feri

Verfasst: 18. Januar 2008 11:22
von T0M
Danke das hilft mir schonmal weiter.
Gut zu wissen das mit dem numerischen Wert ich hatte nämlich schon die Meldung: "Eine Typenkonvertierung kann ... Integer := Text"

Kann mir jemand das mit der Zuweisung der Automation Variablen noch genauer erklären.
Habe momentan folgenden Code:

Code:
WdRange := WdApp.Selection.Range;
WdApp.ActiveDocument.Tables.Add(WdRange,PAR_INT_Row,PAR_INT_Column);
WdApp.Selection.Style := 'Tabellengitternetz';
WdTable := Wdapp.Selection  <-- !!!
WdTable.AutoFitBehavior := 1;


Bei der markierten Zeile gibts noch Probleme.


EDIT:

Habe es nun durch rumprobieren hinbekommen mit folgendem Code:
Code:
WdRange := WdApp.Selection.Range;
WdTable := WdApp.ActiveDocument.Tables.Add(WdRange,PAR_INT_Row,PAR_INT_Column);
WdTable.AutoFitBehavior := 1;
WdApp.Selection.Style := 'Tabellengitternetz';


Danke für eure Hilfe :-D