Autor Thema: Excelexport will nicht sortieren  (Gelesen 6082 mal)

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Excelexport will nicht sortieren
« 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

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #1 am: 13.01.10 - 08:33:48 »
Hallo,

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



Andreas

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #2 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


Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Excelexport will nicht sortieren
« Antwort #3 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?
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #4 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

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #5 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
Gruß
Johnson

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #6 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
Gruß
Johnson

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #7 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

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Excelexport will nicht sortieren
« Antwort #8 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,16507.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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #9 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
« Letzte Änderung: 15.01.10 - 12:58:19 von Demian »
Gruß
Demian

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Würgaround
« Antwort #10 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.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #11 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.
   
« Letzte Änderung: 15.01.10 - 13:05:34 von Demian »
Gruß
Demian

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #12 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

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Excelexport will nicht sortieren
« Antwort #13 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #14 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

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Excelexport will nicht sortieren
« Antwort #15 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
Grüßle Toni :)

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Excelexport will nicht sortieren
« Antwort #16 am: 18.01.10 - 13:18:28 »
... schau mal hier => http://atnotes.de/index.php/topic,39862.msg253782.html#msg253782

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

Toni
Grüßle Toni :)

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: Excelexport will nicht sortieren
« Antwort #17 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz