Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: cpo am 23.06.03 - 16:29:43

Titel: Parameter an Excel übergeben
Beitrag 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
Titel: Re:Parameter an Excel übergeben
Beitrag von: ata am 23.06.03 - 16:56:51
... 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
Titel: Re:Parameter an Excel übergeben
Beitrag von: cpo am 23.06.03 - 17:21:56
ata,

entweder bin ich blond oder zu sehr an die Notes-Hilfe gewöhnt oder es täuscht dich.... 8)

CPO
Titel: Re:Parameter an Excel übergeben
Beitrag von: ata am 23.06.03 - 21:07:47
... die längste Zeit hat Excel benötigt zum Laden...

... aus der Excel-VBA-Hilfe:
Zitat
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
Titel: Re:Parameter an Excel übergeben
Beitrag von: cpo am 01.07.03 - 15:36:48
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
Titel: Re:Parameter an Excel übergeben
Beitrag von: Axel am 01.07.03 - 15:58:55
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
Titel: Re:Parameter an Excel übergeben
Beitrag von: cpo am 02.07.03 - 09:53:22
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
Titel: Re:Parameter an Excel übergeben
Beitrag von: Axel am 02.07.03 - 13:13:46
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
Titel: Re:Parameter an Excel übergeben
Beitrag von: cpo am 02.07.03 - 15:05:12
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
Titel: Re:Parameter an Excel übergeben
Beitrag von: Axel am 02.07.03 - 17:44:27
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