Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: cpo am 23.06.03 - 16:29:43
-
Ich übergebe Werte von Notes an ein Excel-Objekt will dann in Excel alles mögliche machen. Das meiste klappt auch wunderbar (Formatieren etc.)
Jetzt möchte ich aber die Sortierfunktion von Excel nutzen und da sagt mir die Hilfe (und der Makro-Rekorder ;D), dass die Parameter mit := übergeben werden müssen.
Also "Key1:=Range("A2"), Order1:=xlAscending usw"
Dabei streikt dann aber mein script-Editor, := mag er verständlicherweis nicht...
xlsheet.Application.Selection.Sort(und dann ??? ???)
Kennt jemand die Lösung?
CPO
-
... wenn du über die Hilfe in Excel nach dem Sort-Befehl suchst, dann bekommst du die Syntax auch in der "normalen" Schreibweise - wenn mich nicht alles täuscht...
ata
-
ata,
entweder bin ich blond oder zu sehr an die Notes-Hilfe gewöhnt oder es täuscht dich.... 8)
CPO
-
... die längste Zeit hat Excel benötigt zum Laden...
... aus der Excel-VBA-Hilfe:
Sortiert einen PivotTable-Bericht, einen Bereich bzw. den aktiven Bereich (wenn nur eine Zelle angegeben wird).
Syntax
Ausdruck.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod)
Ausdruck Erforderlich. Ein Ausdruck, der ein Range-Objekt zurückgibt.
Key1 Variant optional. Das erste Sortierfeld, als Text (ein PivotTable-Feld oder Bereichsname) oder als Range-Objekt (z. B. "Abtlg" oder Cells(1, 1)).
Order1 Variant optional. Zulässig ist eine der folgenden XlSortOrder-Konstanten: xlAscending oder xlDescending. Mit xlAscending wird Key1 in aufsteigender Reihenfolge sortiert. Mit xlDescending wird Key1 in absteigender Reihenfolge sortiert. Die Standardkonstante ist xlAscending.
Key2 Variant optional. Das zweite Sortierfeld, als Text (ein PivotTable-Feld oder Bereichsname) oder als Range-Objekt. Falls dieses Argument ausgelassen wird, gibt es kein zweites Sortierfeld. Verwenden Sie dieses Argument beim Sortieren von PivotTable-Berichten nicht.
Type Variant optional. Gibt an, welche Elemente sortiert werden sollen. Zulässig ist eine der folgenden XlSortType-Konstanten: xlSortLabels oder xlSortValues. Verwenden Sie dieses Argument nur beim Sortieren von PivotTable-Berichten.
Order2 Variant optional. Zulässig ist eine der folgenden XlSortOrder-Konstanten: xlAscending oder xlDescending. Verwenden Sie xlAscending, um Key2 in aufsteigender Reihenfolge zu sortieren. Verwenden Sie xlDescending, um Key2 in absteigender Reihenfolge zu sortieren. Die Standardkonstante ist xlAscending. Verwenden Sie dieses Argument beim Sortieren von PivotTable-Berichten nicht.
Key3 Variant optional. Das dritte Sortierfeld, als Text (ein Bereichsname) oder als Range-Objekt. Falls dieses Argument ausgelassen wird, gibt es kein drittes Sortierfeld. Verwenden Sie dieses Argument beim Sortieren von PivotTable-Berichten nicht.
Order3 Variant optional. Zulässig ist eine der folgenden XlSortOrder-Konstanten: xlAscending oder xlDescending. Verwenden Sie xlAscending, um Key3 in aufsteigender Reihenfolge zu sortieren. Verwenden Sie xlDescending, um Key3 in absteigender Reihenfolge zu sortieren. Die Standardkonstante ist xlAscending. Verwenden Sie dieses Argument beim Sortieren von PivotTable-Berichten nicht.
Header Variant optional. Legt fest, ob die erste Zeile Überschriften enthält oder nicht. Zulässig ist eine der folgenden xlGuess-Konstanten: xlGuess, xlNo oder xlYes. Mit xlYes enthält die erste Zeile Überschriften (die nicht sortiert werden). Mit xlNo gibt es keine Überschriften (der gesamte Bereich wird sortiert). Mit xlGuess übernimmt Microsoft Excel die Entscheidung, ob eine Überschrift vorhanden ist und falls vorhanden, wo sie sich befindet. Die Standardkonstante ist xlNo. Verwenden Sie dieses Argument beim Sortieren von PivotTable-Berichten nicht.
OrderCustom Variant optional. Bei diesem Argument handelt es sich um einen ganzzahligen, bei 1 beginnenden Offset für die Liste der benutzerdefinierten Sortierreihenfolgen. Wird OrderCustom ausgelassen, wird 1 (Standard) verwendet.
MatchCase Variant optional. True, wenn beim Sortieren Groß- und Kleinschreibung berücksichtigt wird. False, wenn Groß- und Kleinschreibung nicht berücksichtigt wird. Verwenden Sie dieses Argument beim Sortieren von PivotTable-Berichten nicht.
Orientation Variant optional. Hat das Argument den Wert xlSortRows, so wird von oben nach unten sortiert (zeilenweise). Ist das Argument xlSortColumns, so erfolgt die Sortierung von links nach rechts (spaltenweise).
SortMethod Variant optional. Der Sortiertyp. Kann eine der folgenden XlSortMethod-Konstanten sein: xlPinYin oder xlStroke. Einige dieser Konstanten stehen Ihnen, abhängig von der ausgewählten oder installierten Sprachunterstützung (z. B. Deutsch), möglicherweise nicht zur Verfügung.
Anmerkungen
Die Einstellungen für Header, Order1, Order2, Order3, OrderCustom und Orientation werden bei jeder Verwendung dieser Methode gespeichert. Wenn Sie für diese Argumente keine Werte angeben, werden beim nächsten Aufruf der Methode die gespeicherten Werte verwendet. Um Probleme zu vermeiden, legen Sie diese Argumente bei jeder Verwendung dieser Methode explizit fest.
... oder ich habe dich falsch verstanden :-\
ata
-
Hi ata,
zugegeben, ich mache diesen Formatierungskrempel eigentlich nur, weil ich WILL und nicht weil ich muss... Aber wenn sich das doofe Excel querstellt WILL ich halt >:(
Schaffe es aber nicht :'(
Entweder mache ich ein
xlsheet.Application.Selection.Sort ("B2")
Ergebnis ist eine Fehlermeldung, "Die eingegebene Formel enthält einen Fehler"
oder ich mache
xlsheet.Application.Selection.Sort ("B2"), "xlAscending"
Ergebnis ist die Meldung "Die Sort-Methode des Range-Objektes konnte nicht ausgeführt werden"
Vorher habe ich die Selection mal auf eine Zelle gestellt, mal auf mehrere Zeilen - Ergebnis bleibt gleich.
CPO
-
Hi,
ich hab mal so was gemacht. Hier Auszüge aus dem Agenten:
...
Set objExcel = CreateObject("Excel.Application")
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
...
'Füllen der Zellen
...
objSheet.Cells.Select 'Gesamtes Arbeitsblatt markieren
objExcel.Selection.Sort objSheet.Columns("A"), xlAscending , "", objSheet.Columns("B"), xlAscending , objSheet.Columns("C"), xlAscending, xlGuess,1, False, xlTopToBottom
...
Vielleicht hilft es dir weiter.
Axel
-
Danke für die Hilfe, klappt aber bei mir nicht. Der Fehler ist immer noch, dass die Sort-Methode des Range-Objektes... >:( >:( >:(
Hier mal mein Testscript: (mit Biene Maja damit man nicht soviel tippen muss :D)
Dim Arr1(1 To 10) As String
Dim Arr2(1 To 10) As String
Dim Arr3(1 To 10) As String
Arr1(1) = "Willi"
Arr1(2) = "Willi"
Arr1(3) = "Maja"
Arr1(4) = "Willi"
Arr1(5) = "Willi"
Arr1(6) = "Maja"
Arr1(7) = "Willi"
Arr1(8) = "Willi"
Arr1(9) = "Maja"
Arr1(10) = "Willi"
Arr2(1) = "Biene"
Arr2(2) = "Hummel"
Arr2(3) = "Biene"
Arr2(4) = "Hummel"
Arr2(5) = "Biene"
Arr2(6) = "Hummel"
Arr2(7) = "Biene"
Arr2(8) = "Biene"
Arr2(9) = "Biene"
Arr2(10) = "Berta"
Arr3(1) = "5"
Arr3(2) = "3"
Arr3(3) = "7"
Arr3(4) = "6"
Arr3(5) = "8"
Arr3(6) = "4"
Arr3(7) = "3"
Arr3(8) = "2"
Arr3(9) = "1"
Arr3(10) = "0"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
For s = 1 To 10
objsheet.Cells(s, 1).Value = arr1(s)
Next
For s = 1 To 10
objsheet.Cells(s, 2).Value = arr2(s)
Next
For s = 1 To 10
objsheet.Cells(s, 3).Value = arr3(s)
Next
objSheet.Cells.Select 'Gesamtes Arbeitsblatt markieren
objExcel.Selection.Sort objSheet.Columns("A"), xlAscending , "", objSheet.Columns("B"), xlAscending , objSheet.Columns("C"), xlAscending, xlGuess,1, False, xlTopToBottom
Findet jemand den Fehler?
CPO
-
Hi,
ich denke ich hab den Fehler. Dir fehlen die Konstanten xlGuess usw.
Füge diese Zeilen noch ein:
'Konstanten für die Sortierung
Const xlAscending = 1
Const xlGuess = 0
Const xlTopToBottom = 1
Dann sollte es funktionieren.
Axel
-
Ohjeeeeh, auf die Idee´bin ich gar nicht gekommen (bin wirklich blond ;D)
Irgendwie hatte ich geglaubt, dass Excel mich versteht, wenn ich ihm einfach Parameter (und dann noch ohne "" - saublöd!) rüberschiebe...
Vielen, vielen Dank!
CPO
-
Hi,
hat nichts mit blond zu tun.
Ich hatte dir ja die entsprechenden Zeilen gepostet, ohne die Konstanten mit rein zu schreiben. Also ist es auch teilweise mein Versehen.
Axel