Anzeige
Archiv - Navigation
1024to1028
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zugriff auf Excel mit Visual Basic

Zugriff auf Excel mit Visual Basic
18.11.2008 12:23:00
Heiko
Hallo,
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.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff auf Excel mit Visual Basic
18.11.2008 13:38:00
Nepumuk
Hallo Heiko,
sprichst du die Selection-Eigenschaft auch mit objxlApplication.Selection an? So ganz geht das nämlich aus einer Frage nicht hervor.
"If Not Intersect(Selection, Rows(Nr)) Is Nothing Then ..."
Ist reiner Excelcode und kann in VB garnicht laufen.
Intersect ist übrigans auch eine Methode des Application-Objektes. Also eigentlich:
"If Not objxlApplication.Intersect(objxlApplication.Selection, Rows(Nr)) Is Nothing Then ..."
Und ich würde auf alle Fälle vorher den Typ, den die Selection-Eigenschaft zurückgibt prüfen. Wenn das nämlioch ein Shape, ein Chart oder sonstirgendwas ist, aber kein Range, fällst du auf die Nase.
Gruß
Nepumuk
Anzeige
AW: Zugriff auf Excel mit Visual Basic
18.11.2008 13:48:00
Heiko
Hallo Nepumuk,
vielen Dank für die Antwort. Ich habe es eben probiert und es hat funktioniert. Man lernt eben nie aus.
Heiko H.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige