Visual Basic Code in Navision: Parameter Autofitbehavior

17. Januar 2008 16:01

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???
Zuletzt geändert von T0M am 17. Januar 2008 17:48, insgesamt 1-mal geändert.

17. Januar 2008 16:17

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

17. Januar 2008 16:24

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

17. Januar 2008 16:33

-- edit --
oh, hat sich bereits erledigt :oops:

gruesse
feri

17. Januar 2008 17:47

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';

17. Januar 2008 18:43

[Beitrag aus dem Forum Dynamics NAV 5.xx nach Software-Integration verschoben.]

Gruß, Kai
MSDynamics.de-Team

17. Januar 2008 19:24

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.

18. Januar 2008 10:44

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

18. Januar 2008 11:22

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