Activex und Excel

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Activex und Excel

Beitrag von Koverhage »

bekomme folgende Fehlermeldung


------------------------------------------------------------------------------
FEHLERPROTOKOLL von "D:\wexe19\le0.EXE" Datum: 01.05.2007 11:48:57

Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 2
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: Worksheets
-> VALTYPE: N VALUE: 3
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Ung³ltiger Index.
0Fehler bei der Arrayindizierung
oError:filename : NIL
oError:genCode : NIL
oError:operation : Worksheets
oError:osCode : -2147352565
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------

Called from ABRSTAT2EXCEL(1287)
Called from (B)XSAMPLE_160(6027)
Called from DC_XBPPUSHBUTTON:ACTION(488)
Called from (B)DC_XBPPUSHBUTTON:INIT(122)
Called from DC_GETLIST:EVENTLOOP(3955)
Called from DC_GETLIST:READGUI(3402)
Called from DC_READGUI(223)
Called from XSAMPLE_160(6173)
Called from LE500(242)
Called from (B)CREATEMENUSYSTEM(1846)
Called from MAIN(325)

Der Code in dieser Zeile ist
oBook:Worksheets(3):delete()

was ja auch mit der Fehlermeldung übereinstimmt.
Excel öffnet ja generell 3 Arbeitsblätter, obwohl nur eine benötigt wird,
deshalb sollen 3 und 2 gelöscht werden. Dies funktioniert ja auch, bloß bei einem Kunden tritt dieses Problem bisher auf.
Woran kann das liegen, bzw. wie lässt sich das umgehen?

Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Habe eben vom Kunden erfahren das man in Excel die Anzahl der zu öffnenden Arbeitsblätter in den Einstellungen festlegen kann.
Aber wie kann ich prüfen wieviel geöffnet werden?
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Klaus,
das musst Du per ActiveX machen!
Es gibt - glaube ich - die Methode NumWorksheets, oder so ähnlich.
Ich stöbere mal kurz bei msdn...

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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Bitte schön:

Code: Alles auswählen

Dim xl = CreateObject("Excel.Application")
xl.Workbooks.open(Me._dref.FileName)

Dim numWorksheets As Integer
numWorksheets = xl.workbooks(1).worksheets.count
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: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

Olaf hatte in dem Thread über das Drucken mit Word ein Programm benannt, mit dem man
die ActiveX Befehle eines Objectes ermitteln und sogar als Hilfedatei ausgeben kann.
Ich nutze den "Com Assistent"

http://www.devcomponents.com/comassistant/download.html

Dieser kann eine CHM-Hilfe mit allen Objecten und Methoden einer COM-Komponente erzeugen.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Martin

danke für den Tip, läuft gut.

i := oBook:Worksheets():count()
if i > 1
for n := i to 2 STEP -1
oBook:Worksheets(n):delete()
next
endif
Antworten