Excel 11. Object Libary - Problem beim Datenzugriff und mit Strict

03/05/2008 - 19:22 von Manfred | Report spam
Hallo Leute,

ich habe da ein Problem mit der Excel-Object-Libary.

Ich lade Daten aus einer Exceldatei:

Dim oXL As New Excel.Application
Dim oXLWB As Excel.Workbook
Dim oXLWS As Excel.Worksheet

'Keine Meldungen ausgeben
oXL.Application.DisplayAlerts = False

oXLWB = oXL.Application.Workbooks.Open(blabla)

oXLWS = oXLWB.Worksheets.Item("TreatmentMaterialsList")
For _Zeile = 4 To 24 'Nummerierung wie in Excel
For _Spalte = 1 To 4 'Nummerierung wie in Excel
TreatmentMaterialsList_MFPM(_Zeile - 4, _Spalte - 1) =
oXLWS.Cells(_Zeile, _Spalte).Value()
Next _Spalte
Next _Zeile

oXL.Application.Quit()


Das funktioniert auch alles wie erwartet.

Jedoch erhalte ich Fehlermeldungen des Compilers, wenn ich Option Strict =
on setze.
Ich habe alles Mögliche probiert, jedoch bekomme ich die Fehlermeldungen
nicht weg.
Bemàngelt wird:
oXLWS = oXLWB.Worksheets.Item("TreatmentMaterialsList")
wegen einer implizierten Typkonvertierung.
Dies làsst sich zwar mit CType(Blabla, Blabla) beheben.
Warum aber wird das als Worksheet deklarierte Objekt nicht richtig erkannt?

Dann verwende ich zum Lesen aus einer Zelle den Code:

oXLWS.Cells(_Zeile, _Spalte).Value()

Dies wird zwar ausgeführt, jedoch ebenfalls bemàngelt als spàte Bindung.
Außerdem bietet das Objekt "oXLWS.Cells()" nur dann sauber .Value an,
wenn in der Klammer nichts steht.
Wie greife ich dann zur Laufzeit auf eine Zelle zu, wenn ich Spalte und
Zeile so nicht angeben kann?
Auch die Verwendung des Range-Objekts füht zum gleichen Ergebnis.

Für ein paar Tips wàre ich Dankbar.

Grüße

Manfred
 

Lesen sie die antworten

#1 Thomas Hübner
03/05/2008 - 20:27 | Warnen spam
Manfred schrieb:
Hallo Leute,

Außerdem bietet das Objekt "oXLWS.Cells()" nur dann sauber .Value an,
wenn in der Klammer nichts steht.
Wie greife ich dann zur Laufzeit auf eine Zelle zu, wenn ich Spalte und
Zeile so nicht angeben kann?



Ähnliches Verhalten zeigt VBA in Excel auch. Irgendwie streikt da
Intellisense. Es funktioniert trotzdem (zumindest in VBA)

Gruß,
Thomas

Ähnliche fragen