Zugriff auf Excel mit Visual Basic
18.11.2008 12:23:00
Heiko
ich möchte mit einem VB Programm auf Exceltabellen zugreifen. Die notwendigen Initialisierungen erfolgen mit Set objxlApplication = GetObject(, "Excel.Application"), Set objxlWorkbook = objxlApplication.Workbooks(strxlDateiName) und Set objxlWorksheet = objxlWorkbook.Worksheets(strxlWorksheetName). Diese Vorgehensweise rührt daher, da im Programmverlauf mehrmals die Tabellenblätter und / oder Arbeitsmappen gewechselt werden ohne dass dabei das darüberliegende Objekt (also die Arbeitsmappe oder Excel) geändert wird.
Soweit funktioniert alles einwandfrei.
Nun tritt folgendes Problem auf:
Im Programmablauf soll nur auf markierte Zeilen zugegriffen werden. Wenn ich die Exceltabelle vom Programm selber öffnen lasse und dann Selection nutze (z.B. mit "If Not Intersect(Selection, Rows(Nr)) Is Nothing Then ..." um festzustellen ob eine betreffende Zeile markiert ist funktioniert alles. Ist die Exceltabelle aber schon vor dem Programmstart offen, bekomme ich mit Select nur Nothing zurück und die Zeile mit Intersect erzeugt einen Fehler (ungültiger Prozeduraufruf oder ungültiges Argument).
Ich vermute, dass das daran liegt, dass mein Programm und Excel in dem Fall zwar Objekte erzeugen, welche auf die selbe Tabelle verweisen, da es sich aber nicht um die selben Objekte handelt ist die im "Excelojekt" erfolgte Selektierung in meinem "Programmobjekt" nicht verfügbar.
Meine Frage: Wie kann ich mit VB feststellen ob in einer Exceltabelle, auch wenn diese schon vor dem VB-Programmstart geöffnet war, eine Zeile markiert ist oder nicht ?
Vieleicht noch wichtig: die einzelnen Zellen der Tabelle werden im Programm mit "Cells(x,y)" und nicht mit "Range" angesprochen.
Vielen Dank
Heiko H.