Discussion:
GetObject findet offene Instanz nicht
(zu alt für eine Antwort)
Ahmed Martens
2013-03-30 08:02:52 UTC
Permalink
Hallo Leute,

in einem VB6-Modul verwende ich folgenden Code zum Instanzieren einer
offenen Excel-Instanz. Diese funktioniert aber nicht richtig:

<Code Auszug>
Dim xlObj As Excel.Application, objActiveWkb As Excel.Workbook,
objXLSheet As Excel.Worksheet

On Error Resume Next
'Verweis auf offenen Excel
Set xlObj = GetObject(, "Excel.Application")
'Wenn kein Excel, dann neu öffnen

If xlObj Is Nothing Then
Set xlObj = CreateObject("Excel.Application")

With xlObj
.Application.Visible = False
Set objActiveWkb = .Workbooks.Add
Set objXLSheet = objActiveWkb.Sheets(1)
End With

Else
With xlObj
'.Application.Visible = False
Set objActiveWkb = .ActiveWorkbook
Set objXLSheet = objActiveWkb.Sheets.Add
End With
End If

On Error GoTo Excel_Export_Error

<Ende Code Auszug>

Folgender Fehler tritt auf:

1. Ist bereits eine Instanz geöffnet, wird diese nicht gefunden, sondern
mein Code öffnet *immer* eine eigene neue Instanz.

2. Ist diese einmal geöffnet worden, wird diese jetzt immer wieder
richtig als geöffnet instanziert und es wird jetzt jedesmal in die
geöffnete Tabelle ein neues Sheet eingefügt.

Hat einer eine Idee woran es liegen kann?
Ich verwende diesen Code in einem VB6-Programm.

Kann mir einer vielleicht helfen?
Vielen Dank im voraus.

Gruß Ahmed
--
Antworten bitte nur in der Newsgroup
Windows 7 64bit Home Premium
Office Prof. 2010
Claus Busch
2013-03-30 09:31:11 UTC
Permalink
Hallo Ahmed,
Post by Ahmed Martens
in einem VB6-Modul verwende ich folgenden Code zum Instanzieren einer
[Code ausgeschnitten]

Die GetObject-Funktion wird benötigt, wenn eine Komponente bereits in
einer Datei abgespeichert wurde und nun wieder aktiviert werden soll.
CreateObject(ProgID)
GetObject([Pfadname] , (ProgID]
Sehr wahrscheinlich wird dir deswegen eine neue Instanz geöffnet.


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Ahmed Martens
2013-03-30 09:39:37 UTC
Permalink
Hallo Claus,
Post by Claus Busch
Hallo Ahmed,
Post by Ahmed Martens
in einem VB6-Modul verwende ich folgenden Code zum Instanzieren einer
[Code ausgeschnitten]
Die GetObject-Funktion wird benötigt, wenn eine Komponente bereits in
einer Datei abgespeichert wurde und nun wieder aktiviert werden soll.
CreateObject(ProgID)
GetObject([Pfadname] , (ProgID]
Sehr wahrscheinlich wird dir deswegen eine neue Instanz geöffnet.
Mit freundlichen Grüßen
Claus Busch
also ich habe jetzt auch einmal mit

Set xlObj = GetObject("C:\Users\Ahmed\Desktop\Mappe1.xlsx",
"Excel.Application")

versucht. Diese Datei ist geöffnet und dennoch wird diese nicht
gefunden.

Ich begreife das einfach nicht.

Gruß Ahmed
--
Antworten bitte nur in der Newsgroup
Windows 7 64bit Home Premium
Office Prof. 2010
Claus Busch
2013-03-30 09:50:01 UTC
Permalink
Hallo Ahmed,
Post by Ahmed Martens
also ich habe jetzt auch einmal mit
Set xlObj = GetObject("C:\Users\Ahmed\Desktop\Mappe1.xlsx",
"Excel.Application")
versucht. Diese Datei ist geöffnet und dennoch wird diese nicht
gefunden.
aber es wird versucht sie nochmals zu öffnen?
Warum schließt du nicht Excel und öffnest dann neu ohne die Abfrage?


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Ahmed Martens
2013-03-30 10:53:23 UTC
Permalink
Post by Claus Busch
Hallo Ahmed,
Post by Ahmed Martens
also ich habe jetzt auch einmal mit
Set xlObj = GetObject("C:\Users\Ahmed\Desktop\Mappe1.xlsx",
"Excel.Application")
versucht. Diese Datei ist geöffnet und dennoch wird diese nicht
gefunden.
aber es wird versucht sie nochmals zu öffnen?
Warum schließt du nicht Excel und öffnest dann neu ohne die Abfrage?
weil die Excel-Datei später von einem Fremdprogramm erstellt wird und
ich auf diese offene Instanz von meinem Programm verweisen möchte.

Ich werde das ganze aber jetzt anders angehen.
Ich erstelle mir einfach ein Tool unter VBNet. Dort funktioniert
komischerweise der Verweis auf eine bereits geöffnete Instanz.
Ich vermute einmal, dass mein Programm irgendetwas vermurkst hat.

Gruß Ahmed
--
Antworten bitte nur in der Newsgroup
Windows 7 64bit Home Premium
Office Prof. 2010
Claus Busch
2013-03-30 11:28:22 UTC
Permalink
Hallo Ahmed,
Post by Ahmed Martens
Ich werde das ganze aber jetzt anders angehen.
Ich erstelle mir einfach ein Tool unter VBNet. Dort funktioniert
komischerweise der Verweis auf eine bereits geöffnete Instanz.
Ich vermute einmal, dass mein Programm irgendetwas vermurkst hat.
du kannst auch mal hier rein schauen:
http://msdn.microsoft.com/de-de/library/1f3ys1f9(v=vs.80).aspx
oder hier:
http://www.microsoft.com/germany/technet/datenbank/articles/600682.mspx


Mit freundlichen Grüßen
Claus Busch
--
Win XP Prof SP3 / Vista Ultimate SP2
Office 2003 SP3 /2007 Ultimate SP3
Ahmed Martens
2013-03-31 09:43:39 UTC
Permalink
Hallo Claus,

also es ist schon komisch. Jetzt wo ich ein kleines Tool in VBNet
erstellt habe, funktioniert auch mein Hauptprogramm richtig. Vielleicht
kam es immer nur in der VB-IDE zu diesem Fehler und nicht in der
kompilierten Endfassung.

Lange Rede, kurzer Sinn! Jetzt funktioniert alles einwandfrei, auch wenn
nicht ganz nachvollziehbar.

Vielen Dank für Deine Hilfe.

Frohe Ostern.

Gruß Ahmed
--
Antworten bitte nur in der Newsgroup
Windows 7 64bit Home Premium
Office Prof. 2010
Loading...