Excel worksheets:add() ans Ende ???

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Excel worksheets:add() ans Ende ???

Beitrag von brandelh »

Hallo,

laut Excel Hilfe kann man worksheets.add(bevore,after) Parameter übergeben, an welche Stelle das neue WorkSheet soll. Bei Xbase++ kommt es immer vor das aktuelle ...

Auch MOVE() funktioniert nicht, sonst könnte ich es ja einfach verschieben. Eventuell liegt es an den 'VARIANT' Variabeln ?

Hat jemand eine Lösung ?
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Hubert,
yup - war erst vor kurzem Thema in der Newsgroup von Alaska:
Ron Pinkas hat geschrieben:Try:

Worksheets:Add:Move( , Worksheets( Worksheets:Count ) )

The Move method is documented as follows:

Move( [Before], [After] )
Ich wäre nie auf die Idee gekommen, das so umzusetzen - aber probiere mal, ob es klappt.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

das mit der Parameterübergabe (VB sehr flexibel VarName:=Option) ist ein echtes Problem. Ich dachte immer es müsste eine PRG geben, die die Methoden enthält (ähnlich wie damals von JazzAge ...) da könnte man dan nachsehen, aber ich kann nichts finden.

Ich werde es versuchen die METHODE ADD:Move(...) so aufzurufen, danke.
Gruß
Hubert
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Hubert,

das von dir beschriebenen Verhalten hat nichts mit Xbase++ zu tun.
Das ist bei der Office Automation bei Excel der Standard.
If no parameters are passed, the new sheet is placed just before the
ActiveSheet.
Was möchtest du denn erreichen?

Gruß
Alfred
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Alfred,

ich will dass das neue Worksheet ans ENDE kommt. Dazu will ich dem :add(,nEnde) den richtigen Parameter übergeben, aber egal was ich versuche meldet Excel und Xbase++ immer einen Fehler.

Hallo Martin,

dein zitiertes Beispiel wurde erst mit 'missing Function Worksheet' quittiert, was ja auch kein Wunder ist ... mit direktem Aufruf kommt immer der gleiche Fehler:

[quote]
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "D:\Alaska\ALASKA.190\XPPW32\SOURCE\samples\activex\msexcel\excel2.exe" Datum: 11.04.2008 13:33:12

Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows 2000 05.00 Build 02195 Service Pack 4
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: move
-> VALTYPE: U VALUE: NIL
-> VALTYPE: N VALUE: 4
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Die Move-Methode des Worksheet-Objektes konnte nicht ausgef
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

im Alaska Forum hatte jemand die richtige Antwort für mich:

Code: Alles auswählen

oBook:worksheets:add( , oBook:worksheets(oBook:Worksheets:Count()))
oBook:Worksheets:Count() -> 3

aber

Code: Alles auswählen

oBook:worksheets:add( ,  3 )
geht nicht, somit ist der gewünschte Datentyp Variant nicht die NUMMER des Worksheet, sondern wohl das Worksheet selbst ???
Egal auf jeden Fall geht es so und ich bin heilfroh das nun geklärt zu haben :D Auf eine so umständliche Art wäre ich wohl nie selbst gekommen.

@Martin

nochmals Danke für den Hinweis, ab und zu sollte ich wohl doch wieder ins Alaska Forum sehen ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

kleiner Nachtrag ...

Code: Alles auswählen

oBook:worksheets:add(,oBook:worksheets(3))
das hätte bei 3 Worksheets auch funktioniert, also stimmt wohl die Vermutung dass man das betreffende Worksheet selbst übergeben muss ... und so abwegig (umständlich) wie ich dachte ist es ja eigentlich gar nicht.
Wir übergeben ja auch gerne Objekte.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

und noch was ...

wenn man das gerade aktive Sheet gespeichert hat, z.B. in oSheet und das neue genau danach einsortieren will, geht es so direkt:

Code: Alles auswählen

oBook:worksheets:add(,oSheet)
will man das neue WorkSheet vor dem aktuellen einfügen, einfach das eine Komma weg lassen:

Code: Alles auswählen

oBook:worksheets:add(oSheet)
so langsam schnalle ich es mit dem ActiveX Kram ;-)

PS: ich nutze neuerdings Excel Arbeitsmappen um Auswertungen meiner Programme besser darzustellen.
Früher habe ich dazu immer Textdateien verwendet, aber die wurden sehr schnell unübersichtlich.
Gruß
Hubert
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Hubert,


mein Buch sagt

oWorksheet = oWorkbook.Worksheets.Add(oBefore,oAfter,[nCount],[nType])


Gruß
Alfred

PS: Ich hatte gerade die Lösung für dich fertig und dann nervt der
Hausmeister wegen eines Wasserschadens :(
und dann bist du auch noch schneller. Nicht mein Tag heute.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi Alfred,

danke dass du für mich gesucht hast !
Gruß
Hubert
Antworten