Thema Datum  Von Nutzer Rating
Antwort
23.09.2010 21:41:21 Johannes Leikel
NotSolved
23.09.2010 23:38:51 Severus
NotSolved
24.09.2010 17:30:32 Holger
NotSolved
29.09.2010 08:31:47 Severus
NotSolved
Rot Aw:Aw:Aw:Aw:CALL nach dem laden einer Referenz nic
29.09.2010 13:58:46 Holger
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
29.09.2010 13:58:46
Views:
794
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Aw:Aw:CALL nach dem laden einer Referenz nic
Severus schrieb am 29.09.2010 08:31:47:

Holger schrieb am 24.09.2010 17:30:32:

Severus schrieb am 23.09.2010 23:38:51:

Johannes Leikel schrieb am 23.09.2010 21:41:21:

Hallo zusammen,

mit meinem VBA-Code möchte ich eine Referenz laden (eine weitere Datei
die zusätzlichen VBA-Code enthält).

Direkt nach dem laden möchte ich eine Funktion aus der neuen Referenz
mittels "CALL" aufrufen.

Leider erscheint dann beim CALL-Aufruf der Prozedur stets die Meldung
"objekt nicht gefunden". Die Referenz wurde aber vollständig geladen.

Wenn ich meine Prozedur ein zweites mal starte funktioniert das CALL ohne
Probleme. Hier mein Code:

--- schnipp --

' Option Explicit ist deaktiviert da ansonsten Fehlermeldungen auftreten.
Sub AutoNew()
On Error GoTo Errorhandling
Dim strUserName As String, strRefpath, myref As Reference, tf As
Boolean
Dim docApp As New Word.Application

strRefpath = Environ("userprofile") &
"\Anwendungsdaten\Microsoft\Word\STARTUP\MeineVorlage.dot"

strUserName = LCase(Environ("Username"))
For Each myref In VBE.ActiveVBProject.References
If myref.FullPath = strRefpath Then
tf = True
Exit For
End If
Next myref
If tf = False Then

' Hier wird die Referenz geladen die weiter unten
' per CALL aufgerufen werden soll.
VBE.ActiveVBProject.References.AddFromFile (strRefpath)

End If

' Dieses CALL schlägt beim ERSTEN AUFRUF fehl ("Objekt nicht gefunden").
' Der Projektname ist der name der zuvor aktivierten Referenz
Call MyProjektname.modulname.meineProzedur(strUserName)




Exit Sub
MsgBox "Fehler beim starten von AutoNew, " & Err.Description
End Sub

--- schnapp --

Ich verwende Word 2007 unter Windows XP.
Was mache ich falsch?

Grüße,
Johannes


Hi Johannes,

einen wirklichen Fehler kann ich auch nicht finden. Immerhin versuch mal
VBE.ActiveVBProject.References.AddFromFile strRefpath:DoEvents
modulname.meineProzedur strUserName

Weitere Möglichkeit:
Do
For Each myref In VBE.ActiveVBProject.References
If myref.FullPath = strRefpath Then
tf = True
Exit For
End If
Next myref
If tf = False Then
VBE.ActiveVBProject.References.AddFromFile strRefpath:DoEvents
End If
Loop Until tf = True


Näheres kann ich ohne eine Mustermappe nicht sagen.

Severus


Hallo Johannes,
ich kenne ein ähnliches Problem, wenn man ein anderes Programm nur an der Oberfläche mit Shell, AppActivate und SendKey anpacken kann. Auch wenn Wait richtig eingestellt ist, kann es zu unerwarteten Fehlern kommen, weil der nächste Programmschritt bereits ausgeführt wird, wenn das aufgerufene Programm noch nicht ganz fertig ist. Dieser Fehler tritt zufällig, also nicht immer auf.
Deshalb vermute ich, dass die Referenz im Gegensatz zu deiner Annahme doch noch nicht vollständig geladen ist, wenn der Call-Befehl ausgeführt werden soll. Ich habe in diesen kritischen Bereichen das Problem gelöst, indem ich dem PC 1/20 bis 1/10 sec Zeit lasse. Füge also vor dem Call-Befehl z.B.
t=timer
do until timer>t+.05 'oder zB .1
doevents 'optional
loop
ein.
Ich würde mich über eine Rückmeldung freuen, da ich, wie geschrieben, selbst vor dem Problem stehe.
Gruß
Holger


Hi,
was mir noch aufgefallen ist:
Von wo aus (welche Applikation) rufst Du diesen Code eigentlich auf? Aus Word?
Warum dann
Dim docApp As New Word.Application?
Wenn aus Excel oder so dann brauchst Du natürlich auch eine Referenz zur Word .olb.
Severus


Hallo Severus,
ich kann mir nicht vorstellen, dass eine Verweisangabe fehlt, weil bei weiteren Durchläufen des Programms der Fehler nicht wieder auftritt.
Ich steuere für bestimmte Vorhaben u.a. C++-Programme, deren Quelltexte mir nicht vorliegen, über deren Oberfläche. Da gibt es Funktionen, die etwas Zeit benötigen. Schiebt man dann zu schnell z.B. einen SendKey-Befehl hinterher, kommt es zu Fehlern oder zu unterwarteten Reaktionen dieser Programme.
Je nach dem, welchen Verweis Johannes einrichten will und woher er gelasden wird (.exe, .dll), kann ich mit vorstellen, dass ebenfalls der nächste Programmschitt ausgeführt wird, bevor das Laden beendet ist. Dann wird beim ersten Durchlauf ein Fehler entstehen, bei den weiteren aber nicht. Das ist genau die Beobachtung. Deshalb halte ich meinen o.a. Ansatz für zielführend.
Vielleicht hat Johannes ja irgendwann einmal die Güte, eine Rückmeldung auf unsere Einlassungen zu geben.
Gruß
Holger

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
23.09.2010 21:41:21 Johannes Leikel
NotSolved
23.09.2010 23:38:51 Severus
NotSolved
24.09.2010 17:30:32 Holger
NotSolved
29.09.2010 08:31:47 Severus
NotSolved
Rot Aw:Aw:Aw:Aw:CALL nach dem laden einer Referenz nic
29.09.2010 13:58:46 Holger
NotSolved