Discussion:
A2007: Fehler MyRefObj.Fullpath
(zu alt für eine Antwort)
wb_3001
2010-08-17 13:55:56 UTC
Permalink
Irgendwie funkltioniert das mit dem Posten nicht.
Falls das 1. Posting aber, obwohl ich es noch immer nicht sehen kann,
angekommen ist, möchte ich mich für dieses 2. entschuldigen.

Hallo Access 2007 Spezialisten!

Ich stelle meine DB's von A2003 auf A2007 um.

Bei der Ermittlung der Verweise gibt es ein Problem:
Bei der Methode
ObjRef.FullPath kommt der Fehler
"Die Methode 'Fullpath' für das Objekt 'Reference'ist fehlgeschlagen"
Unter A2003 funktionierte das seit langem.

Auf der Site von Thomas Möller http://www.access-im-unternehmen.de/557
schreibt er,
daß diese Methode für die Versionen ab A97 oder höher funktioniert.

Oder ist mein bisher verwendeter Code falsch:

Set RSVerweise = db.OpenRecordset(strVerweisTab, DB_OPEN_DYNASET)
For Each objRef In Application.VBE.ActiveVBProject.References
RSVerweise.AddNew
...
RSVerweise!Pfad = objRef.FullPath <==== Fehler unter A2007
RSVerweise.Update
...
Next objRef
RSVerweise.Close

PC mit den DB´s für A2003:
XP Prof SP3, Office Prof 2003 SP3 , VB6 SP6.

PC mit den DB´s für A2007:
XP Prof SP3, Office Enterprise 2007 SP1, Visualstudio 2008 SP1.

Ich ersuche die A2007-Spezialisten um eine Unterstützung bei der
Fehlerbeseitigung

Wolfgang
Josef Poetzl
2010-08-17 14:04:33 UTC
Permalink
Hallo!
Post by wb_3001
For Each objRef In Application.VBE.ActiveVBProject.References
RSVerweise.AddNew
...
RSVerweise!Pfad = objRef.FullPath <==== Fehler unter A2007
Ist ein Verweis eventuell defekt (IsBroken = true)?

zum Testen:
Dim objRef As Access.Reference

For Each objRef In Application.References
Debug.Print objRef.GUID,
If objRef.IsBroken Then
Debug.Print "oje"
Else
Debug.Print objRef.FullPath
End If
Next objRef


Anm.:
Bei Application.VBE.ActiveVBProject.References musst du aufpassen,
dass du die richtigen References erwischt. ActiveVBProject ist nicht
zwangsweise das VB-Projekt der Anwendung.


mfg
Josef
wb_3001
2010-08-17 15:12:41 UTC
Permalink
On 17 Aug., 16:04, Josef Poetzl <***@joposol.com> wrote:

Hallo Josef!
Post by Josef Poetzl
Bei Application.VBE.ActiveVBProject.References musst du aufpassen,
dass du die richtigen References erwischt. ActiveVBProject ist nicht
zwangsweise das VB-Projekt der Anwendung.
Der gesamte Code enthält die Auswertung (fast?) aller Methoden:

Set RSVerweise = db.OpenRecordset(strVerweisTab, DB_OPEN_DYNASET)
For Each objRef In Application.VBE.ActiveVBProject.References
RSVerweise.AddNew
RSVerweise!Verweis = objRef.Name
'Methode Beschreibung nur für Objekt
Application.VBE.ActiveVBProject.References vorhanden!
RSVerweise!Beschreibung = objRef.Description
RSVerweise!IsBroken = objRef.IsBroken
RSVerweise!BuiltIn = objRef.BuiltIn
RSVerweise!Version = objRef.Major & "." & objRef.Minor
RSVerweise!Pfad = objRef.FullPath
RSVerweise.Update
Next objRef
RSVerweise.Close

Es gibt keinen unterbrochenen Verweis.

Ich habe den Code betr. Fehlerbehandlung erweitert, der Fehler tritt
bei sieben von insgesamt 17 Verweisen auf:

Verweis <IHost>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
Verweis <IWshRuntimeLibrary>, Fehler <Die Methode 'FullPath' für das
Objekt 'Reference' ist fehlgeschlagen>
Verweis <Excel>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
Verweis <Word>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
Verweis <SHDocVw>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
Verweis <DAO>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
Verweis <VBIDE>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>

Eigentlich dachte ich, daß es bei einem Objekt eine bestimmte Methode
gibt, oder nicht.
Stimmt nicht.
Bei bestimmten Verweisen gibt es diese Methode, bei anderen nicht.
Bleibt für mich offen, bei welchen Verweisen es sie nicht gibt?
Die oa. Liste ist sicher unvollständig.

Wobei erweitert gilt: Du sollst immer eine effiziente Fehlerbehandlung
einbauen!

Wolfgang
wb_3001
2010-08-17 15:23:16 UTC
Permalink
Post by wb_3001
Hallo Josef!
Ich habe vergessen darauf hinzuweisen, daß unter A2003 die Verweise
auf

IHost, IWshRuntimeLibrary, Excel, Word, SHDocVw, VBA (in A2007 VBIDE)
und IWshRuntimeLibrary

sehr wohl vollständig Pfadangaben haben.

Wolfgang
Josef Poetzl
2010-08-17 15:46:52 UTC
Permalink
Hallo!
Post by wb_3001
Ich habe den Code betr. Fehlerbehandlung erweitert, der Fehler tritt
Verweis <IHost>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
Verweis <IWshRuntimeLibrary>, Fehler <Die Methode 'FullPath' für das
Objekt 'Reference' ist fehlgeschlagen>
Verweis <Excel>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
[...]

Wenn du diese Verweise im Verweisfenster ansiehst, wird dort ein Pfad
angezeigt?
Post by wb_3001
Bleibt für mich offen, bei welchen Verweisen es sie nicht gibt?
Die oa. Liste ist sicher unvollständig.
... und vor allem nicht zu 100% fix, denn bei mir wird z. B. bei Excel
ein Wert für FullPath ausgegeben - wobei ich aber mit Ac2010 testete
und auch direkt einen Excel2010-Verweis einfügte.

Was siehst du eigentlich in der Registry, wenn du nach der GUID des
Verweises suchst? Ist dort eine Pfad-Angabe vorhanden?
(Beachte dabei auch Major/Minor.)

Zum Testen/Überprüfen:
Dim objRef As VBIDE.Reference

For Each objRef In Application.VBE.ActiveVBProject.References
Debug.Print objRef.GUID, objRef.Name, objRef.Major, objRef.Minor,
On Error Resume Next
Debug.Print objRef.FullPath,
Debug.Print
Next objRef

Ergebnis bei mir (Office 2010):
{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} Office 2.5
C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\MSO.DLL

{00020813-0000-0000-C000-000000000046} Excel 1.7
C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE

{00062FFF-0000-0000-C000-000000000046} Outlook 9.4
C:\Program Files (x86)\Microsoft Office\Office14\msoutl.olb

{00020905-0000-0000-C000-000000000046} Word 8.5
C:\Program Files (x86)\Microsoft Office\Office14\MSWORD.OLB


mfg
Josef
wb_3001
2010-08-18 22:02:32 UTC
Permalink
Post by Josef Poetzl
Wenn du diese Verweise im Verweisfenster ansiehst, wird dort ein Pfad
angezeigt?
Ja!

Puh!!
Ich habe eine Testserie abgewickelt und kenne mich nun gar nicht mehr
aus!
Die Fehler sind fast für jeden User andere, und auch anders
falls ich zeilenweise trace, oder die Funktion durchlaufen lasse.
Getestet habe ich als Admin, als User mit Admin-Rechten, als
eingeschränkter (gewöhnlicher) User.
Es sind aber immer dieselben Verweise betroffen:

Als eingeschränkter User
beim zeilenweisen Debuggen:
? Get_References("Verweise")
{60254CA0-953B-11CF-8C96-00AA00B8708C} Err.Number <-2147319779>,
Verweis <IHost>, Fehler <Automatisierungsfehler Bibliothek nicht
registriert. >
{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B} Err.Number <-2147319779>,
Verweis <IWshRuntimeLibrary>, Fehler <Automatisierungsfehler
Bibliothek nicht registriert. >
{00020813-0000-0000-C000-000000000046} Err.Number <-2147319779>,
Verweis <Excel>, Fehler <Automatisierungsfehler Bibliothek nicht
registriert. >
{00020905-0000-0000-C000-000000000046} Err.Number <-2147319779>,
Verweis <Word>, Fehler <Automatisierungsfehler Bibliothek nicht
registriert. >
{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} Err.Number <-2147319779>,
Verweis <SHDocVw>, Fehler <Automatisierungsfehler Bibliothek nicht
registriert. >
{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28} Err.Number <-2147319779>,
Verweis <DAO>, Fehler <Automatisierungsfehler Bibliothek nicht
registriert. >
{0002E157-0000-0000-C000-000000000046} Err.Number <-2147319779>,
Verweis <VBIDE>, Fehler <Automatisierungsfehler Bibliothek nicht
registriert. >

Fehler ohne zeilenweises Debuggen:
{60254CA0-953B-11CF-8C96-00AA00B8708C} Err.Number <-2147319779>,
Verweis <IHost>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B} Err.Number <-2147319779>,
Verweis <IWshRuntimeLibrary>, Fehler <Die Methode 'FullPath' für das
Objekt 'Reference' ist fehlgeschlagen>
{00020813-0000-0000-C000-000000000046} Err.Number <-2147319779>,
Verweis <Excel>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
{00020905-0000-0000-C000-000000000046} Err.Number <-2147319779>,
Verweis <Word>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} Err.Number <-2147319779>,
Verweis <SHDocVw>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28} Err.Number <-2147319779>,
Verweis <DAO>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>
{0002E157-0000-0000-C000-000000000046} Err.Number <-2147319779>,
Verweis <VBIDE>, Fehler <Die Methode 'FullPath' für das Objekt
'Reference' ist fehlgeschlagen>

in der Registry habe ich gefunden:
IHost Windows Script Host (Ver 5.6), GUID in Registry nicht
gefunden, die Datei sollte heißen: C:\WINDOWS\system32\wscript.exe
IWshRuntimeLibrary Windows Script Host Object Model, C:\WINDOWS
\system32\wshom.ocx
Excel Microsoft Excel 12.0 Object Library, E:
\MS_OFF~1\Office12\EXCEL.EXE
Word Microsoft Word 12.0 Object Library, E:
\MS_Office_11\Office12\MSWORD.OLB
SHDocVw Microsoft Internet Controls, %SystemRoot%
\system32\shdocvw.dll
DAO Microsoft Office 12.0 Access database engine Object Library, C:
\PROGRA~1\GEMEIN~1\MICROS~1\OFFICE12\ACEDAO.DLL
VBIDE Microsoft Visual Basic for Applications Extensibility 5.3, C:
\Programme\Gemeinsame Dateien\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB

Als User mit Administratorrechten:
Fehler ohne zeilenweises Debuggen:
? Get_References("Verweise")
objRef.Guid <{60254CA0-953B-11CF-8C96-00AA00B8708C}>, Err.Number
<-2147319779>, Verweis <IHost>, Fehler <Microsoft Office Access kann
das in Ihrem Ausdruck angesprochene Feld '|' nicht finden.>
objRef.Guid <{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}>, Err.Number
<-2147319779>, Verweis <IWshRuntimeLibrary>, Fehler <Microsoft Office
Access kann das in Ihrem Ausdruck angesprochene Feld '|' nicht
finden.>
objRef.Guid <{00020813-0000-0000-C000-000000000046}>, Err.Number
<-2147319779>, Verweis <Excel>, Fehler <Microsoft Office Access kann
das in Ihrem Ausdruck angesprochene Feld '|' nicht finden.>
objRef.Guid <{00020905-0000-0000-C000-000000000046}>, Err.Number
<-2147319779>, Verweis <Word>, Fehler <Microsoft Office Access kann
das in Ihrem Ausdruck angesprochene Feld '|' nicht finden.>
objRef.Guid <{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}>, Err.Number
<-2147319779>, Verweis <SHDocVw>, Fehler <Microsoft Office Access kann
das in Ihrem Ausdruck angesprochene Feld '|' nicht finden.>
objRef.Guid <{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}>, Err.Number
<-2147319779>, Verweis <DAO>, Fehler <Microsoft Office Access kann das
in Ihrem Ausdruck angesprochene Feld '|' nicht finden.>
objRef.Guid <{0002E157-0000-0000-C000-000000000046}>, Err.Number
<-2147319779>, Verweis <VBIDE>, Fehler <Microsoft Office Access kann
das in Ihrem Ausdruck angesprochene Feld '|' nicht finden.>

beim zeilenweisen Debuggen:
? Get_References("Verweise")
objRef.Guid <{60254CA0-953B-11CF-8C96-00AA00B8708C}>, Err.Number
<-2147319779>, Verweis <IHost>, Fehler <Automatisierungsfehler,
Bibliothek nicht registriert. >
objRef.Guid <{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}>, Err.Number
<-2147319779>, Verweis <IWshRuntimeLibrary>, Fehler
<Automatisierungsfehler, Bibliothek nicht registriert. >
objRef.Guid <{00020813-0000-0000-C000-000000000046}>, Err.Number
<-2147319779>, Verweis <Excel>, Fehler <Automatisierungsfehler,
Bibliothek nicht registriert. >
objRef.Guid <{00020905-0000-0000-C000-000000000046}>, Err.Number
<-2147319779>, Verweis <Word>, Fehler <Automatisierungsfehler,
Bibliothek nicht registriert. >
objRef.Guid <{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}>, Err.Number
<-2147319779>, Verweis <SHDocVw>, Fehler <Automatisierungsfehler,
Bibliothek nicht registriert. >
objRef.Guid <{4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}>, Err.Number
<-2147319779>, Verweis <DAO>, Fehler <Automatisierungsfehler,
Bibliothek nicht registriert. >
objRef.Guid <{0002E157-0000-0000-C000-000000000046}>, Err.Number
<-2147319779>, Verweis <VBIDE>, Fehler <Automatisierungsfehler,
Bibliothek nicht registriert. >

Es ist für mich nicht durchschaubar.
Ich habe testweise die C:\WINDOWS\system32\wshom.ocx registriert, aber
das Ergebnis war dasselbe wie vorher.
Aber alle Aufrufe des WSH funktionieren!
Ich möchte Office 2003 auf dem Rechner mit Office 2007 nicht
installieren, nur um zu probieren, ob es vielleicht geht.
Jedenfalls ging es bisher mit A03 problemlos.
Ich habe noch einen weiteren Rechner mit XP Prof SP3, Office 2007.
Dort werde ich es nochmal testen.

Die zwei umgestellten DB´s funktionieren nach geringfügigen
Anpassungen.
Eben bis auf die Auswerung der Verweise.

Ich kann mir nicht vorstellen, daß Office 2007 unordentlich
installiert ist.
Auf dem Rechner ist so wenig wie möglich drauf.
Als größter Brocken zwar Pinnacle Studio ultimate Version 12, Nero v.
9, VS 2008 sowie WinTV7 von Hauppauge. Das wars dann auch schon.

Mit den besten Grüßen
Wolfgang
Winfried Sonntag
2010-08-19 04:52:48 UTC
Permalink
Post by wb_3001
Ich möchte Office 2003 auf dem Rechner mit Office 2007 nicht
installieren, nur um zu probieren, ob es vielleicht geht.
Jedenfalls ging es bisher mit A03 problemlos.
Ich habe noch einen weiteren Rechner mit XP Prof SP3, Office 2007.
Dort werde ich es nochmal testen.
Es gibt auch virtuelle Maschinen, da testet es sich einfacher. ;)
Post by wb_3001
Die zwei umgestellten DB´s funktionieren nach geringfügigen
Anpassungen.
Eben bis auf die Auswerung der Verweise.
Ich kann mir nicht vorstellen, daß Office 2007 unordentlich
installiert ist.
SP2 fehlt. Evtl. wird mit dem SP2 wieder so manches gerade gezogen.
Ansonsten könntest Du auch eine Office Reparatur probieren.
Post by wb_3001
Auf dem Rechner ist so wenig wie möglich drauf.
Als größter Brocken zwar Pinnacle Studio ultimate Version 12, Nero v.
9, VS 2008 sowie WinTV7 von Hauppauge. Das wars dann auch schon.
Kannst Du auf Nero verzichten? CDBurnerXP ist klein und kostenlos.

Servus
Winfried
--
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de
wb_3001
2010-08-19 08:47:30 UTC
Permalink
Post by Winfried Sonntag
Es gibt auch virtuelle Maschinen, da testet es sich einfacher. ;)
Habe ich noch nie wirklich gebraucht und deshalb auch noch nie
versucht.
Ist aber nach Deinem Hinweis doch zu überlegen.
Post by Winfried Sonntag
SP2 fehlt. Evtl. wird mit dem SP2 wieder so manches gerade gezogen.
Ansonsten könntest Du auch eine Office Reparatur probieren.
Danke. Werde ich sofort herunterladen und installieren.
Post by Winfried Sonntag
Kannst Du auf Nero verzichten? CDBurnerXP ist klein und kostenlos.
Das habe ich auch schon überlegt, denn auf einem PC einer Bekannten
konnte ich
Nero 9 gar nicht installieren.

Ich werde mich nach den Anpassungen wieder melden.

Wolfgang
Wolfgang Badura
2010-08-19 13:41:36 UTC
Permalink
Hallo Winfried!
Ich habe nun Office 2007 SP 2 installiert.
Die Probleme mit den Dateipfaden sind unverändert.

Es scheint mir, daß ich mit diesem Bug leben werde müssen. Ganz so schlimm
ist es ja nicht.
Schade nur um die leeren Kilometer.
Manchmal glaube ich, daß die Software vom Hersteller wegen deren Komplexität
einfach nicht mehr
sorgfältig wartbar ist und es deswegen immer wieder zu Fehlern kommen muß.

Merkwürdigerweise habe ich die Gabe, schon nach relativ kurzer Zeit des
Gebrauches Mängel zu entdecken.
Nicht nur bei Produkten von Microsoft.

Danke jedenfalls für die Hinweise.

Wolfgang
Josef Poetzl
2010-08-19 15:20:09 UTC
Permalink
Hallo!
Post by Wolfgang Badura
Ich habe nun Office 2007 SP 2 installiert.
Die Probleme mit den Dateipfaden sind unverändert.
Hast du die Anwendung eigentlich schon einmal mit /decompile geöffnet?

Kannst du das Problem eigentlich auch bei neu erstellen Dateien
nachstellen oder tritt es nur bei der einen Access-Anwendung auf?

mfg
Josef
wb_3001
2010-08-19 21:21:24 UTC
Permalink
Post by Josef Poetzl
Kannst du das Problem eigentlich auch bei neu erstellen Dateien
nachstellen oder tritt es nur bei der einen Access-Anwendung auf?
Habe Deinen Tip soeben probiert.
Neue DB Test.accdb.
Die Zeile der Funktion über die Zwischenablage in neues Modul kopiert,
kompiliert und:

Es funktionierte!
Anschließend habe ich eine neue DB erstellt und alles aus der alten
importiert.
Nun geht die Ermittlung der Pfade bis auf jenen Verweis auf den
Scripting Host.
Der Pfad wird im Verweisfenster angezeigt, nur die Methode .FullPath
steht nicht zur Verfügung.
Kann ich irgendwie verstehen, da es sich um ein nicht registrierbares
Programm handelt.

Danke für alle Hinweise, die ich in diesem Thread erhielt.
Die Fehlerbehebung war eigentlich eine, die ich selbst schon öfters
angewandt habe,
wenn etwas nicht so funktionierte wie es sollte.

Da habe ich MS unrecht getan. Ich werde weinen gehen. ;-)

Wolfgang
Wolfgang Badura
2010-08-19 22:09:02 UTC
Permalink
Hallo Josef!
"wb_3001" <***@aon.at> wrote in message news:95a98bb0-057b-4263-aa27-***@m1g2000yqo.googlegroups.com...
On 19 Aug., 17:20, Josef Poetzl <***@joposol.com> wrote:

Der Pfad wird im Verweisfenster angezeigt, nur die Methode .FullPath
steht nicht zur Verfügung.
Kann ich irgendwie verstehen, da es sich um ein nicht registrierbares
Programm handelt.

Allerdings funktioniert unter A03 die Ermittlung der Pfadangabe mit der
Methode .FullPath auch für diesen Verweis.
Ein Rückschritt, ein Bug?

Wolfgang

Winfried Sonntag
2010-08-19 04:48:24 UTC
Permalink
Post by wb_3001
XP Prof SP3, Office Enterprise 2007 SP1, Visualstudio 2008 SP1.
Für O2007 gibts ja auch schon ein SP2, evtl. solltest Du das mal
installieren. Und die folgenden Updates anschließend auch noch.

Servus
Winfried
--
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de
Loading...