[gelöst]Excelzelle vertikal

17. Juni 2010 10:04

Hallo,

ich suche nach eine Möglichkeit, bei einem Excelexport die Zelle vertikal zu befüllen. Mein Ansatz war es, es direkt über die Automation zu lösen. Hat jmd. so etwas schon gemacht und kann mir da ein paar tipps geben!

Danke.

vg Rom
Zuletzt geändert von rom am 17. Juni 2010 13:45, insgesamt 1-mal geändert.

Re: Excelzelle vertikal

17. Juni 2010 13:04

Hallo

wenn ich Daten von NAV an Excel übergebe und ein bestimmtes Format benötige gehe ich wie folgt vor:

ich Starte Excel und zeichne ein Makro auf dann setze ich diese Funktion in NAV mit dem Automation Server um

Gruß
Matthias

Re: Excelzelle vertikal

17. Juni 2010 13:45

Hallo,

danke für die Antwort, funktioniert so gut :-)

vg

Re: Excelzelle vertikal

17. Juni 2010 14:06

Ich muss mich leider als Office-inkompetent outen, aber sonst sterbe ich dumm:

Matthias Vismann hat geschrieben:ich Starte Excel und zeichne ein Makro auf dann setze ich diese Funktion in NAV mit dem Automation Server um

Kannst du mir das noch genauer beschreiben? Welche Funktionen führst du aus und wie erfolgt die Verwendung beim AutomationServer?

Re: [gelöst]Excelzelle vertikal

17. Juni 2010 18:01

Hallo Natalie,

in Exel ein Makro Starten dann die Funktion in Excel ausführen z. B. das der Wert in dem Feld Fett angezeigt wird. Das Makro Stoppen und dann das Makro ansehen. In dem Makro von Excel steht dann folgendes:

Selection.Font.Bold = True

In Navision musst du dann folgendes eingeben:

Sheet.Range('A' + '1').Font.Bold(TRUE);

Für die einzelnen Funktionen von Navision -> Excel ist etwas probieren erforderlich.

Gruß
Matthias

Re: [gelöst]Excelzelle vertikal

17. Juni 2010 20:04

Matthias Vismann hat geschrieben:Hallo Natalie,

in Exel ein Makro Starten dann die Funktion in Excel ausführen z. B. das der Wert in dem Feld Fett angezeigt wird. Das Makro Stoppen und dann das Makro ansehen. In dem Makro von Excel steht dann folgendes:

Selection.Font.Bold = True

In Navision musst du dann folgendes eingeben:

Sheet.Range('A' + '1').Font.Bold(TRUE);

Für die einzelnen Funktionen von Navision -> Excel ist etwas probieren erforderlich.

Gruß
Matthias


Sheet ist bestimmt eine globale Variable in NAV, vom Typ "Automation Server" und Subtyp "'Microsoft Excel 11.0 Object Library'.Sheets" bzw. 12.0 falls man 2007 benutzt?

Re: [gelöst]Excelzelle vertikal

18. Juni 2010 10:25

Ich habe mal ein paar gängige Befehle zusammengetragen.

Die Gobalen Variablen einbinden bzw. die konkrete MS Excel Object Library die du verwendest.

Code:
Name   DataType                   Subtype   
Excel   Automation   'Microsoft Excel 9.0 Object Library'.Application   
Book   Automation   'Microsoft Excel 9.0 Object Library'.Workbook   
Sheet   Automation   'Microsoft Excel 9.0 Object Library'.Worksheet


Instanz erzeugen
Code:
Create(Excel);


Exceltabelle mit Workbook und Sheet erzeugen und speichern
Code:
Book:=Excel.Workbooks.Add; // Exceltabelle und Worksheet erzeugen
Book:=Excel.Workbooks.Open('C:\Pfad\Dateiname.xls'); //Pfad zur Exceldatei
Sheet:=Book.Worksheets.Item('Tabelle1'); // gehe zu Tabelle 1
Book.SaveAs('dateiname.xls'); // Excel Datei speichern
Sheet.Activate; // Sheet aktivieren
Book.Save; // in bestehende Datei speichern
Book.Close; // Schliessen


ein paar nützliche Excel Formatierungen und Zuweisungen:
Code:
Sheet.Range('A1:B100').NumberFormat := '@';  // Text für Spalte A1-B100
Sheet.Range('C1:C100').NumberFormat := '#.##0'; // Zahlformat für Spalte C1-C100 mit 1000. Trennung
Sheet.Range('D1:D100').NumberFormat := '#.##0,00 €'; // Währungsformat für Spalte D1-D100 mit 1000. Trennung in €

Sheet.Range('A1').Font.Bold:=TRUE; // Schrift Fett
Sheet.Range('A1').Font.Size:=12; // Schriftgröße
Sheet.Range('A1:B1').MergeCells := TRUE; // Zellen verbinden
Sheet.Columns.AutoFit; // optimale Spaltenbreite

Sheet.Range('A1').Value:='Text'; // Wert zuweisen
Sheet.Range('A1').FormulaLocal:='=Summe(A2:A100)'; //Formel in Excel verwenden


Excel beenden und Instanz löschen
Code:
Excel.Quit; // Excel beenden
CLEAR(Excel); // Instanz löschen


Gruß winfy