Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: g202e am 23.06.04 - 16:03:36

Titel: Sortieren in Excel
Beitrag von: g202e am 23.06.04 - 16:03:36
Hallo,
ich exportiere Daten nach Excel und möchte anschließend meine Excel-Tabelle sortieren.  Also hab ich mir meine Excel-Tabelle geöfnnet und den Makro-Recorder angeschmissen:
gesamte Tabelle markiert -> Daten -> Sortieren -> Sortierkriterium ausgewählt(Spalte "B") dann "absteigend" ausgewählt und danach den Recorder gestoppt. Ich erhalte folgenden VBA-Code:
#############schnipp############
Cells.Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
#######schnapp###########
Wie bringe ich das jetzt nach LotusScript?
Mein Versuch:
g_xlApp.Cells.Select
g_xlApp.Selection.Sort(Range"B2", xlAscending, xlGuess, 1, False, xlTopToBottom)
wird abgelehnt mit "Unexspected:"B2";Exspected:Operator"
Es gibt doch hier sicher jemanden, der sowas schon getan hat?
(SuFu mit "excel + sort" war nicht zielführend)
Danke für eure Tipps
Titel: Re:Sortieren in Excel
Beitrag von: Axel am 23.06.04 - 16:22:21
Hi,

das hab ich mal gemacht.

...
Set objExcel = CreateObject("Excel.Application")
...
Call objExcel.Workbooks.Add
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

...
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
...

Sortierung erfolgt nach den ersten 3 Spalten aufsteigend.


Axel
Titel: Re:Sortieren in Excel
Beitrag von: g202e am 23.06.04 - 16:52:44
Danke, Axel.
Mein Code sieht jetzt so aus:
   Set g_xlApp = CreateObject( "Excel.Application")
         Set g_xlWBook = g_xlWBooks.Add
.....
   Set g_xlActSheet = g_xlWBook.ActiveSheet
......
   g_xlActSheet.Cells.Select  'Gesamtes Arbeitsblatt markieren
   g_xlApp.Selection.Sort  g_xlActSheet.Columns("B"),"", xlAscending ,  xlGuess,1, False, xlTopToBottom   
Ich erhalte jetzt eine Fehlermeldung(s.u.) Die ganzen xl....Attribute(ascending...) habe ich als variant deklariert.
Kannst du mir nochmal weiterhelfen?

Titel: Re:Sortieren in Excel
Beitrag von: Axel am 23.06.04 - 18:10:00
Hi,

die ganzen xl... - Attribute sind Konstanten. Diese habe ich in einer Lib deklariert und vergessen mitzuposten. Sorry.  :-\

Die Namen haben ich denen aus Excel angeglichen und die dazu passenden Werte aus dem Objekt-Katalog im VBA-Editor rausgesucht.

Wenn ich morgen früh in der Firma bin kann ich die die Angaben posten.

Axel
Titel: Re:Sortieren in Excel
Beitrag von: ata am 23.06.04 - 23:01:02
... zu den Konstanten gibt es in der IBM-Sandbox eine Datenbank zum Download - suche nach "EXCEL", oder "WORD"...


ata
Titel: Re:Sortieren in Excel
Beitrag von: Axel am 24.06.04 - 08:24:56
Hi,

hier die versprochenen Konstanten:

Zitat

'Konstanten für die Sortierung
Const xlAscending = 1
Const xlGuess = 0
Const xlTopToBottom = 1



@ata

Für Excel gibt es was, aber nur für Version 97. Es besteht die Möglichkeit, dass einige Konstanten geändert wurden und neue hinzugekommen sind.
Man kann diese Datei sicherlich als Anhaltspunkt verwenden, trotzdem schadet ein Blick in die Objektverweise im VBA-Editor nichts.


Axel
 
Titel: Re:Sortieren in Excel
Beitrag von: ata am 24.06.04 - 08:52:51
@Axel

... da gebe ich dir natürlich recht...

ata
Titel: Re:Sortieren in Excel
Beitrag von: g202e am 24.06.04 - 09:49:27
Danke euch beiden.
Sobald mein Testserver wieder einsatzbereit ist, werde ich die Konstanten einbauen und hoffe mal dass es dann klappt.
@ata: Passt schon, wir arbeiten noch mit Office97.
Titel: Re:Sortieren in Excel
Beitrag von: g202e am 24.06.04 - 10:36:00
So, nun gehts. Beim ersten Versuch bekam ich in der Zeile
g_xlApp.Selection.Sort  g_xlActSheet.Columns("B"), xlAscending ,  xlGuess,1, False, xlTopToBottom
erhielt ich zwar: Microsoft Excel: Bezug ist ungültig
Nachdem ich für die ganzen optionalen weiteren Sortierkriterien leere Parameter übergeben habe, läuft es aber durch.
g_xlApp.Selection.Sort  g_xlActSheet.Columns("B"),"",,,,, xlAscending ,  xlGuess,1, False, xlTopToBottom
Danke nochmals.