Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: WildVirus am 13.01.10 - 07:38:11

Titel: Excelexport will nicht sortieren
Beitrag von: WildVirus am 13.01.10 - 07:38:11
Moin,

habe eine Exceltabelle erstelle und alles klappt bis auf das Sortieren.

Es kommt immer die Meldung "Microsoft Office Excel: Bezug ist ungültig."

Dim xlsheet As Variant
   Set xlsheet = xl.Workbooks(1).ActiveSheet
   xl.Range("A2","D" & Cstr(row)).Select
   
   'Sortiere
   xl.Selection.Sort  xlSheet.Columns("B"), xlAscending , "", xlSheet.Columns("A"), xlAscending , xlYes,1, False, xlTopToBottom   

Hat jemand eine Idee ?

Thx.

CU,
Axel
Titel: Re: Excelexport will nicht sortieren
Beitrag von: ascabg am 13.01.10 - 08:33:48
Hallo,

Aber die VBA-Konstanten (xlAscending, ...) sind schon definiert in deinem LN-Code?



Andreas
Titel: Re: Excelexport will nicht sortieren
Beitrag von: WildVirus am 13.01.10 - 10:38:21
Hallo Andreas,

ja, da ich generell mit Option Declare arbeite:

Const xlDiagonalDown=5
Const xlNone=-4142
Const xlDiagonalUp=6
Const xlEdgeBottom=9
Const xlEdgeLeft=7
Const xlEdgeRight=10
Const xlEdgeTop=8
Const xlAutomatic=-4105
Const xlContinuous=1
Const xlThin=2
Const xlInsideVertical=11
Const xlUnderlineStyleNone=-4142
Const xlPrintNoComments=-4142
Const xlLandscape=2
Const xlPaperA4=9
Const xlDownThenOver=1
Const xlYes = 1
Const xlAscending = 1
Const xlSortNormal = 0
Const xlTopToBottom = 1

CU,
Axel

Titel: Re: Excelexport will nicht sortieren
Beitrag von: DerAndre am 13.01.10 - 10:50:49
Aus der VBA Hilfe:

Ausdruck.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

Dein Key2 ist "" dadurch Folgefehler, oder?
Titel: Re: Excelexport will nicht sortieren
Beitrag von: ascabg am 13.01.10 - 11:05:24
Zitat
Dein Key2 ist "" dadurch Folgefehler, oder?
Das sollte eigentlich keine Auswirkungen haben, da es sich bei den meisten der Parameter um Optionale Parameter handelt.

Ich wuerde mal folgendes versuchen.
Code
call ApplicationObject.Selection.Sort(xlSheet.Columns("B"), xlAscending , "", xlSheet.Columns("A"), xlAscending , xlYes,1, False, xlTopToBottom)


Andreas
Titel: Re: Excelexport will nicht sortieren
Beitrag von: Johnson am 13.01.10 - 16:55:32
Du musst für Key1 und Key2 die erste Zelle der jeweiligen zu sortierenden Spalte angeben.

Also:
Code
Dim xlsheet As Variant
Dim r as Variant
Set xlsheet = xl.Workbooks(1).ActiveSheet
Set r = xl.Range("A2","D" & Cstr(row))

'Sortiere
r.Sort  xlSheet.Cells(1, 2), xlAscending , "", xlSheet.Cells(1, 1), xlAscending , xlYes,1, False, xlTopToBottom
Titel: Re: Excelexport will nicht sortieren
Beitrag von: Johnson am 13.01.10 - 16:57:13
Sorry! Das wird auch so nicht funktionieren, da dein Bereich von A2 nach Dx geht. ^^

So sollte es funktionieren:
Code
Dim xlsheet As Variant
Dim r as Variant
Set xlsheet = xl.Workbooks(1).ActiveSheet
Set r = xl.Range("A2","D" & Cstr(row))

'Sortiere
r.Sort  r.Cells(1, 2), xlAscending , "", r.Cells(1, 1), xlAscending , xlYes,1, False, xlTopToBottom
Titel: Re: Excelexport will nicht sortieren
Beitrag von: WildVirus am 14.01.10 - 21:42:35
Guten Abend,

erstmal vielen Dank für die Tipps. Habe sie alle ausprobiert, aber die Fehlermeldung bleibt immer die selbe.

Überspringe die Sortierzeile momentan mit einem 'On Error Resume Next' und lande dann im Excelsheet.

Habe mit dem Makrorekorder in Excel das Markieren und Sortiern nochmal aufgezeichnet und versucht, den Code umzusetzen, aber irgendwie klappt es nicht. Es kommt immer die o.g. Meldung.

Das liefert Excel:
Code
    Columns("A:D").Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
    , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
    False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
    :=xlSortNormal

Das Markieren klappt problemlos, egal ob über Columns oder 'Set r = xl.Range("A2","D" & Cstr(row))' oder über 'xl.Range("A2","D" & Cstr(row)).Select'. Bei der Anzeige in Excel sind genau die Zellen/Spalten markiert.

Nur nicht sortiert, sondern in der Reihenfolge wie sie in Notes halt kommen.

Bin ratlos und höre für heute auf.

Schönen Abend,
Axel
Titel: Re: Excelexport will nicht sortieren
Beitrag von: Axel am 15.01.10 - 08:23:11
Hast du hier im Forum schon mal nach Excel und Sortierung gesucht. Da gibt es einiges an Infos.

z.B. hier:

http://atnotes.de/index.php/topic,40598.0.html (http://atnotes.de/index.php/topic,40598.0.html)
http://atnotes.de/index.php/topic,16507.0.html (http://atnotes.de/index.php/topic,16507.0.html)
http://atnotes.de/index.php/topic,6193.0.html (http://atnotes.de/index.php/topic,6193.0.html)

Und es gibt noch eine ganze Reihe mehr. Vielleicht ist was für dich dabei.

Axel
Titel: Re: Excelexport will nicht sortieren
Beitrag von: Demian am 15.01.10 - 10:15:04
also ich hab die Sort-Zeile jetzt mal in Excel getestet, da gehts genauso wenig. Das Problem ist die Reihenfolge der Parameter.

So gehts in Excel:

Call Selection.Sort(Columns("B"), xlAscending, Columns("A"), , xlAscending, , , xlGuess, 1, False, xlTopToBottom)

Das was der Makrorecorder aufzeichnet kann nicht als Grundlage genommen werden, was die Reihenfolge der Parameter betrifft, weil hier die Bezeichner der Parameter davor stehen. Du kannst die Parameter in Excel beliebieg tauschen wegen dem Bezeichner. Die optionalen Parameter müssen von Notes aus mit übergeben werden.

Korrigiert mich, wenn ich falsch liege.

Gruß
Demian
Titel: Würgaround
Beitrag von: jo@chim am 15.01.10 - 12:21:23
Ich hatte ein ähnliches Problem. Habe es so gelöst, dass ich das VBA-Makro "sortieren" in Excel gespeichert habe:

Code
Sub sortieren()
    Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Key2:=Range("B3") _
        , Order2:=xlDescending, Key3:=Range("E3"), Order3:=xlAscending, Header _
        :=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

und in Notes per

Code
ExcelApplicationObject.run "sortieren"

starte.

Bedingung dafür ist allerdings natürlich, dass Du mit einer festen Vorlage arbeitest.
Titel: Re: Excelexport will nicht sortieren
Beitrag von: Demian am 15.01.10 - 13:03:50
also ich war da vorhin etwas voreilig.

Kann es sein, dass deine Überschriften in Zeile 1 stehen? Wenn ja, liegt es an dem xlyes in Verbindung damit, dass du erst ab Zeile 2 markierst, glaube ich. Wenn du da ein xlguess draus machst, sollte es klappen.

Habs eben mal mit nem Agenten probiert:

Code
Dim ex As Variant
Const xlAscending = 1
Const  xlGuess = 0
Const xlTopToBottom = 1
	
Set ex = getobject(,"Excel.Application")
ex.activesheet.Range("A2","D7").Select
Call ex.Selection.Sort(ex.Columns("B"), xlAscending, ex.Columns("A"), , xlAscending, , , xlGuess, 1, False, xlTopToBottom)

Gruß
Demian

PS: Alternativ halt ab A1 markieren.
   
Titel: Re: Excelexport will nicht sortieren
Beitrag von: WildVirus am 16.01.10 - 00:16:52
Guten Abend,

danke für die Tipps. Anhand der drei von meinem Namensvetter eingefügten Links bin ich nochmal durch die VBAHilfe und habe die Formel überarbeitet.

Jetzt wird richtig sortiert.

Hier das Ergebnis:
Code
Call xl.Selection.Sort ( xlsheet.Columns("B"), xlAscending, xlsheet.Columns("A"),,xlAscending,,,xlYes,1,False)

Kaum ist die Tabelle fertig, zeigt sich das nächste Problem:

Ans Ende kommen Summenfunktionen, die die Spalten aufsummieren sollen. Das Eintragen klappt, nur kommt immer #NAME? bei Excel raus. In den Feldern steht es richtig drin.

Gebe es für jetzt auf und gehe ins Bett.

Falls jemand eine Idee hat, hier der Codeteil:
Code
	xlWbk.ActiveSheet.Cells(row, 3)= {=Summe(C2:C} & row-1 & ")"
	xlWbk.ActiveSheet.Cells(row, 4)= {=Summe(D2:D} & row-1 & ")"
	
	xl.Columns("C:D").Select
	xl.Selection.NumberFormat = "#.0"	

Habe es auch schon mit der Formula-Methode probiert, ohne Ergebnis.

Gute Nacht allerseits,
Axel
Titel: Re: Excelexport will nicht sortieren
Beitrag von: Axel am 16.01.10 - 16:14:11
...
Das Eintragen klappt, nur kommt immer #NAME? bei Excel raus. In den Feldern steht es richtig drin.
...

In der Regel deutet diese Meldung auf einen fehlerhaften Bezug innerhalb einer Formel hin. Ich würde das Ganze mal daraufhin prüfen.

Axel
Titel: Re: Excelexport will nicht sortieren
Beitrag von: WildVirus am 16.01.10 - 20:35:40
Hallo Axel,

habe ich geprüft. Wenn ich in Excel in das Feld gehe, F2 (=Bearbeiten) und Enter drücke, zeigt Excel sofort das richtige Ergebnis an.

Excel schreibt es als Textwert rein, erkennt, dass es eigentlich eine Formel ist, aktiviert sie aber nicht. So sieht es für mich aus. Denn der Tooltip auf dem kleinen Icon sagt das auch.

Nur wie kann ich es bei der Übergabe anders machen ?

CU,
Axel
Titel: Re: Excelexport will nicht sortieren
Beitrag von: ata am 18.01.10 - 13:15:06
... die Übergabe einer Formel in Excel macht immer wieder mal Probleme. Ich habe das anders gelöst - ich denke bei der Funktionssammlung zu Excel in den Best Practices habe ich das drin - ich schau mal...

Toni
Titel: Re: Excelexport will nicht sortieren
Beitrag von: ata am 18.01.10 - 13:18:28
... schau mal hier => http://atnotes.de/index.php/topic,39862.msg253782.html#msg253782 (http://atnotes.de/index.php/topic,39862.msg253782.html#msg253782)

=> xlSheet.Cells( row , column ).FormulaLocal = sFormula

Toni
Titel: Re: Excelexport will nicht sortieren
Beitrag von: WildVirus am 18.01.10 - 21:15:35
Hallo Toni,

das war's. Jetzt klappt es super.

Vielen Dank allen die mit geholfen haben.

Thread ist damit erledigt.

Schönen Abend noch,
Axel