Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: chris0102 am Oktober 14, 2010, 08:45:03

Titel: Laufzeitfehler 2774
Beitrag von: chris0102 am Oktober 14, 2010, 08:45:03
Hallo,

ich habe Access als Firmensoftware, wenn ich da in der Datenbank einen Kunden aufmache und dann ein Briefdokument an ihn schreiben will kommt bei mir, sobald Word geöffnet wird, folgende Fehlermeldung:

Laufzeitfehler "2774"

Die Komponente Unterstützt die Automatisierung nicht.

Sie haben versucht, eine Visual-Basic Prozedur auszuführen in der ein Automatisierungsobjekt verwiesen wird.
Prüfen sie Anhand der Dokumentation der Komponente, ob die Automatisierung unterstützt wird.



Kann mir wer helfen?
Danke schon einmal im vorraus
Titel: Re: Laufzeitfehler 2774
Beitrag von: database am Oktober 14, 2010, 09:09:33
Hallo, schönen guten Morgen,

schau mal im VBA-Editor unter Extras --- Verweise nach ob da vielleicht eine Komponente als 'NICHT VORHANDEN' markiert ist.

Mir schaut das danach aus als würde der Verweis auf die 'Microsoft Word xx.x Object Library' fehlen oder für eine falsche Version eingestellt sein
oder der Verweis auf die OLE Automation fehlen.

HTH

Peter
Titel: Re: Laufzeitfehler 2774
Beitrag von: chris0102 am Oktober 14, 2010, 11:09:52
also wenn ich bei der Fehlermeldung auf Testen gehe kommt folgendes:

Option Compare Database
Option Explicit

Dim gdocName As String


' Neues Dokument erstellen
' myTyp = 0 => Aufruf aus Vertragspartner
' myTyp = 1 => Aufruf aus Angebot/Vertrag
' myTyp = 2 => Aufruf aus Vermittler
' myTyp = 3 => Aufruf aus Lieferant

Public Function NewDocument(myID As Long, myTyp As Long)
    Dim dbs As Database
    Dim rst As Recordset, rstVp As Recordset, rstAuto As Recordset
   
    Dim sWork As String, strSQL As String, wPath As String
    Dim docName As String
    Dim BriefFrm As Object, Dokument As Object, wrd As Object
   
    gdocName = ""       ' Leerstring setzen
    ' Formular zur Auswahl des Dokumentes anzeigen
    DoCmd.OpenForm "DokumentVorlagen"
   
    Do
        DoEvents    ' Systemaufruf
    Loop Until Len(gdocName) > 0
   
    Set dbs = CurrentDb             ' ptr auf aktuelle DB
       
    ' Pfad auf Word-Dateien laden
    wPath = GetStrWert("WordPath")
    docName = wPath + gdocName   ' save document name
   
       
    If myTyp = 0 Then           ' Aufruf aus Vertragspartner
        Set BriefFrm = Forms![frmVertragspartner]![UF_Schriftverkehr].Form
        Set Dokument = BriefFrm![Dokument]
        Forms![frmVertragspartner]![UF_Schriftverkehr].SetFocus
        DoCmd.GoToRecord , , acNewRec   ' neuen Datensatz in Schriftverkehr anlegen
        Forms![frmVertragspartner]![UF_Schriftverkehr]![Betreff] = gdocName
        Forms![frmVertragspartner]![UF_Schriftverkehr]![Datum] = Date
        BriefFrm![VPID] = myID  ' VPID eintragen
        strSQL = "select * from Vertragspartner where VPID = " + Str(myID)
    End If
    If myTyp = 1 Then           ' Aufruf aus Angebot
        Set BriefFrm = Forms![Angebot]![UF_Schriftverkehr].Form
        Set Dokument = BriefFrm![Dokument]
        Forms![Angebot]![UF_Schriftverkehr].SetFocus
        DoCmd.GoToRecord , , acNewRec   ' neuen Datensatz in Schriftverkehr anlegen
        Forms![Angebot]![UF_Schriftverkehr]![Betreff] = gdocName
        Forms![Angebot]![UF_Schriftverkehr]![Datum] = Date
        BriefFrm![AngId] = myID ' AngID eintragen
        BriefFrm![VPID] = Forms![Angebot]![VPID]
        strSQL = "select * from Vertragspartner where VPID = " + Str(Forms![Angebot]![VPID])
    End If
    If myTyp = 2 Then           ' Aufruf aus Formular Vermittler
        Set BriefFrm = Forms![Vermittler]![UF_Schriftverkehr].Form
        Set Dokument = BriefFrm![Dokument]
        Forms![Vermittler]![UF_Schriftverkehr].SetFocus
        DoCmd.GoToRecord , , acNewRec   ' neuen Datensatz in Schriftverkehr anlegen
        Forms![Vermittler]![UF_Schriftverkehr]![Betreff] = gdocName
        Forms![Vermittler]![UF_Schriftverkehr]![Datum] = Date
        BriefFrm!VMID = Forms![Vermittler]![VMID]
        strSQL = "select Anrede, Strasse, PLZ, " & _
                 "Ort, Landescode as Land, Name from Vermittler " & _
                 "where VMID = " + Str(myID)
    End If
    If myTyp = 3 Then           ' Aufruf aus Formular Lieferant
        Set BriefFrm = Forms![frmLieferant]![UF_Schriftverkehr].Form
        Set Dokument = BriefFrm![Dokument]
        Forms![frmLieferant]![UF_Schriftverkehr].SetFocus
        DoCmd.GoToRecord , , acNewRec   ' neuen Datensatz in Schriftverkehr anlegen
        Forms![frmLieferant]![UF_Schriftverkehr]![Betreff] = gdocName
        Forms![frmLieferant]![UF_Schriftverkehr]![Datum] = Date
        BriefFrm!VMID = Forms![frmLieferant]![LFID]
        strSQL = "select Anrede, Strasse, PLZ, " & _
                 "Ort, Landescode as Land, Firma as Name from Lieferant " & _
                 "where LFID = " + Str(myID)
    End If
    ' Daten des Vertragspartners über SQL-Befehl in Tabelle selektieren
    Set rstVp = dbs.OpenRecordset(strSQL, dbOpenDynaset)
   
    BriefFrm![Datum] = Now()            ' aktuelles Datum vorbelegen
   
    ' Word Dokument vorbereiten
    Dokument.Class = "Word.Document"
    Dokument.SourceDoc = docName
    Dokument.DisplayType = acOLEDisplayIcon
    Dokument.Action = acOLECreateEmbed
    Dokument.Verb = acOLEVerbOpen
    Dokument.Action = acOLEActivate
   
    Set wrd = Dokument.Object.Application
   
    'Anrede und Namen des VP einsetzen
    On Error Resume Next
    If Not IsNull(rstVp![Anrede]) Then
        sWork = rstVp![Anrede] + " "
    End If
    If (Not IsNull(rstVp![Name])) Then
        sWork = sWork + " " + rstVp![Name]
    End If
    wrd.Selection.Goto What:=wdGotoBookmark, Name:="Anrede_VP"
    wrd.Selection.InsertAfter sWork
   
    ' Strasse einsetzen
    sWork = rstVp![Strasse]
    wrd.Selection.Goto What:=wdGotoBookmark, Name:="Strasse_VP"
    wrd.Selection.InsertAfter sWork
    'Landescode einfügen
    wrd.Selection.Goto What:=wdGotoBookmark, Name:="LandesCode_VP"
    wrd.Selection.InsertAfter rstVp![Land]
    ' PLZ einsetzen
    wrd.Selection.Goto What:=wdGotoBookmark, Name:="PLZ_VP"
    wrd.Selection.InsertAfter rstVp![PLZ]
    ' Ort
    wrd.Selection.Goto What:=wdGotoBookmark, Name:="Ort_VP"
    wrd.Selection.InsertAfter rstVp![Ort]
    ' Datum
    wrd.Selection.Goto What:=wdGotoBookmark, Name:="SB_Datum"
    wrd.Selection.InsertAfter Date
   
    ' speziell für HU/AU werden zusätzliche Textmarken verwendet
    If docName = "F:\Ladedokumente\HU_AU.doc" Then
        strSQL = "select * from qryHauptuntersuchung where vpid =" & rstVp![VPID]
        Set rstAuto = dbs.OpenRecordset(strSQL, dbOpenDynaset)
             
        wrd.Selection.Goto What:=wdGotoBookmark, Name:="Kennzeichen"
        wrd.Selection.InsertAfter rstAuto![Kennzeichen]
        wrd.Selection.Goto What:=wdGotoBookmark, Name:="HU"
        wrd.Selection.InsertAfter rstAuto![N_HU]
        wrd.Selection.Goto What:=wdGotoBookmark, Name:="AU"
        wrd.Selection.InsertAfter rstAuto![N_AU]
    End If
   
    ' kein Schließen von Word, da vom Benutzter noch benutzt!
End Function

Public Function SetDocName(dName As String)
    gdocName = dName
End Function






und die Zeile " Set wrd = Dokument.Object.Application" ist Gelb hinterlegt
Titel: Re: Laufzeitfehler 2774
Beitrag von: database am Oktober 14, 2010, 11:18:58
Zitatund die Zeile " Set wrd = Dokument.Object.Application" ist Gelb hinterlegt

heißt für mich, Access kann hier mit Word nicht kommunizieren (grob umschrieben)

hast du die Verweise kontrolliert?
Titel: Re: Laufzeitfehler 2774
Beitrag von: chris0102 am Oktober 14, 2010, 11:24:37
Ich such grad noch wo man die so findet =)
Titel: Re: Laufzeitfehler 2774
Beitrag von: DF6GL am Oktober 14, 2010, 11:28:46
VBA-Editor/Menüleiste/Extras/Verweise


Zitat database:
Zitatschau mal im VBA-Editor unter Extras --- Verweise nach ob da vielleicht eine Komponente als 'NICHT VORHANDEN' markiert ist.
Titel: Re: Laufzeitfehler 2774
Beitrag von: chris0102 am Oktober 14, 2010, 13:13:17
Also wenn ich den VBA-Editor öffnen will kommt bei mir gar nichts. ich kann weder was öffnen noch der gleichen. Wenn ich aber in Access ein Makro ausführen will, z.b. Test, kommt bei mir die Fehlermeldung "Datenbank kann das Formular nicht finden, auf das in einem Makroausdruck oder in einer Visual Basic-Programmzeile verwiesen wird.

Das Formular befindet sich auf einen Server, auf den ich vollen Zugriff habe, kann dort alle Dokumente verändern etc. und hab mir auch alles in Ruhe durchgelesen, der Pfad was angegeben ist, worauf Access zugreifen muss ist richtig.
Titel: Re: Laufzeitfehler 2774
Beitrag von: chris0102 am Oktober 14, 2010, 13:16:23
Achja und wenn ich den VBA-Editor öffnen will kommt der Fehler "Auf Makrospeicher kann nicht zugegriffen werden"
Titel: Re: Laufzeitfehler 2774
Beitrag von: DF6GL am Oktober 14, 2010, 13:33:21
Hallo,


mhmm, bin verwirrt..


Ein Formular kann nicht auf einem Server liegen, es liegt in einer Access-(MDB/MDE-) Datei  .  Die wiederum kann natürlich irgendwo im Netzwerk liegen.


Wie auch immer, es scheint eine korrumoierte DB zu sein.

Kopiere die MDB-DAtei mal vom Server-Verzeichnis in ein lokales Verzeichnis auf deinem Rechner und öffne sie dann. Versuch, den VBA-Editor zu öffnen (<Alt><F11> drücken)  und öffnen das Verweis-Fenster wie beschrieben.


Wenn das auch nicht geht,  erstell eine neue leere Db auf Deinem Rechner und importiere(!) darin alles aus der alten DB.


Titel: Re: Laufzeitfehler 2774
Beitrag von: database am Oktober 14, 2010, 18:40:59
@DF6GL

ich helfe dir beim Verwirrtsein - ich bin's auch grad.
Ich hab' ja schon wirklich viele Dinge gesehen und gehört - das ist mir aber neu.

Aber egal ...  

Zitatund die Zeile " Set wrd = Dokument.Object.Application" ist Gelb hinterlegt

@chris0102
DA BIST DU JA IM VBA-EDITOR, den brauchst nicht mehr extra öffnen, was übrigens über die Entwurfsansicht eines Formulars oder eines Moduls am Leichtesten zu bewerkstelligen wäre.

Brich die Codeausführung an der Stelle einfach mal ab - dann musst du doch eine Menüleiste sehen können, die du auch anklicken kannst oder?
Wenn ja, dann schau bitte nach ob sich da was in der Form zeigt, wie ich es beschrieben habe.

Wenn das nicht funktioniert, dann versuche wie DF6GL angeraten hat die Datei mal auf deinen lokalen Rechner zu KOPIEREN und Starte die Datei mal mit gedrückter SHIFT-Taste.
Dann wie bereits erwähnt entweder ein Modul in der Entwurfsansicht öffnen oder ein Formular und von dort aus in den Code / VBA-Editor.


Zu deiner erwähnten Fehlermeldung konnte ich folgendes finden:
http://support.microsoft.com/kb/212669/de (http://support.microsoft.com/kb/212669/de)
Hier wird u.A. auch ein Berechtigungsproblem im Netzwerk behandelt und defekte VB-Dll's,
allerdings im Zusammenhang mit Word 2000 aber die Verwandtschaft ist ja nicht so weitschichtig.

Mal sehen ob du nun an die Verweise kommst.