Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Übergabe akt. Datensatz an Word

Begonnen von hoppelhase, Juli 31, 2012, 14:19:43

⏪ vorheriges - nächstes ⏩

hoppelhase

Hallo,

ich habe eine Access-Datenbank mit einem Formular. Darin ist ein Button, der Word startet und dort in einem Serienbrief die aktuellen Felder des Datensatzes übergibt. Dort wird dann ein fertiges Schreiben angezeigt.
Nach der Umstellung auf Access2010 kommt eine Fehlermeldung, wenn ich diesen Botton drücke:

Laufzeitfehler 424
Objekt erforderlich. Beim debuggen bleibt die Markierung stehen bei "Set worddoc..."

Ich zahle 10 Euro für den Hinweis, der das Problem behebt!
Danke.

Hier die Ereignisprozedur:
-----------------------------------------------------------------------------------
Private Sub Bescheid_drucken_Click()

Dim wordobj As Object, worddoc As Object
Dim VORLAGE As String
        Set wordobj = CreateObject("Word.Application")
            VORLAGE = aktVerz() & "\Bescheid.dot"
                           
        Set worddoc = wordobj.Documents.Add(Template:=VORLAGE)
            worddoc.Bookmarks("Gebühr").Range = Me!Gebühr & ""
            worddoc.Bookmarks("UR").Range = Me!UR & ""
            worddoc.Bookmarks("Vertragsdatum").Range = Me!Vertragsdatum & ""
            worddoc.Bookmarks("Käufername").Range = Me!Käufername & ""
            worddoc.Bookmarks("Käuferstraße").Range = Me!Käuferstraße & ""
            worddoc.Bookmarks("Käuferort").Range = Me!Käuferort & ""
            worddoc.Bookmarks("Käuferanrede").Range = Me!Käuferanrede & ""
            worddoc.Bookmarks("Käuferanrede2").Range = Me!Käuferanrede2 & ""
            worddoc.Bookmarks("KZ").Range = Me!KZ & ""
            worddoc.Bookmarks("fällig").Range = Me!fällig & ""
                       
           
        worddoc.Parent.ChangeFileOpenDirectory aktVerz
               
        wordobj.Visible = True
        Set worddoc = Nothing
        Set wordobj = Nothing
End Sub
-----------------------------------------------------------------------------------



DF6GL

Hallo,

nur 10 €   :o ??? ;)


Ist Word2010 (richtig) installiert und registriert?

Sind  für Access und Word die vertrauenswürdigen Speicherorte definiert?

Sind im Sicherheitscenter/Einstellungen für Makros/alle Makros aktivieren bzw. Zugriff auf das VBA-Projekt ...    aktiviert?

hoppelhase

#2
Hallo,

meine EDV sagt, alle 3 Punkte seien ok.

Ich zahle auch 50 Euro.

Gruß
hppelhase

DF6GL

Hallo,

sagen kann die viel, hat die das auch mal überprüft?


Irgendwo in diesem Umfeld muss der Fehler liegen...    Der Code an sich funktioniert (Word-Aufruf) ....

PS:  Die Verzeichnis-/Datei--Zugriffsrechtevergabe hab ich noch nicht (explizit) angesprochen.  Dises Einstellungen sollten auch mal genau untersucht werden.

hoppelhase

Hallo,

das Problem ist gelöst. Der neue PC war zu schnell und die Prozedur hat zu schnell weitr machen wollen.
Es wurde eine Schleife eingebaut und nun geht es.

Da muss man erst mal drauf kommen.

Kleines Problem noch: Word wird nun schön gestartet, bleibt aber im HIntergrund.
Man muss also Alt+Tab machen oder mit der Maus Word nach vorne holen.
Gibts ein Befehlchen, welches das erledigt?

- da zahl ich aber nix,  ich muss schon meinem Kollegen, der das Problem gelöst hat, was zahlen...-

Gruß
hoppelhase



Private Sub Bescheid_drucken_Click()

Dim wordobj As Object, worddoc As Object
Dim VORLAGE As String
        Set wordobj = CreateObject("Word.Application")
            VORLAGE = aktVerz() & "\Bescheid.dot"
                           
            For i = 1 To 500000
            Next
            DoCmd.Beep
                           
        Set worddoc = wordobj.Documents.Add(Template:=VORLAGE)
            worddoc.Bookmarks("Gebühr").Range = Me!Gebühr & ""
            worddoc.Bookmarks("UR").Range = Me!UR & ""
            worddoc.Bookmarks("Vertragsdatum").Range = Me!Vertragsdatum & ""
            worddoc.Bookmarks("Käufername").Range = Me!Käufername & ""
            worddoc.Bookmarks("Käuferstraße").Range = Me!Käuferstraße & ""
            worddoc.Bookmarks("Käuferort").Range = Me!Käuferort & ""
            worddoc.Bookmarks("Käuferanrede").Range = Me!Käuferanrede & ""
            worddoc.Bookmarks("Käuferanrede2").Range = Me!Käuferanrede2 & ""
            worddoc.Bookmarks("KZ").Range = Me!KZ & ""
            worddoc.Bookmarks("fällig").Range = Me!fällig & ""
                       
           
        worddoc.Parent.ChangeFileOpenDirectory aktVerz
               
        wordobj.Visible = True
        Set worddoc = Nothing
        Set wordobj = Nothing
End Sub

Beaker s.a.

Hallo hoppelhase,
ZitatFor i = 1 To 500000
Next
Ein einfaches DoEvents sollte eigentlich genügen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

bahasu

#6
Hallo Hoppelhase,

Zitat von: hoppelhase am August 02, 2012, 19:03:19
Man muss also Alt+Tab machen oder mit der Maus Word nach vorne holen.
Gibts ein Befehlchen, welches das erledigt?

   AppActivate "Microsoft Word"


Zitat von: hoppelhase am August 02, 2012, 19:03:19
- da zahl ich aber nix,  ich muss schon meinem Kollegen, der das Problem gelöst hat, was zahlen...-

Dieser Beitrag war kostenlos, aber hoffentlich nicht umsonst.

Harald
Servus

DF6GL

Hallo,


"Der neue PC war zu schnell und die Prozedur hat zu schnell weitr machen wollen."


halte ich für eine obskure Fehlererklärung...    :o

database

Hallo,

:D ;D :o
ZitatDer neue PC war zu schnell...

So eine Kiste hätt' ich auch gerne!  ::)

hoppelhase

@bahasu

Hallo,

leider schaff ich das mit dem Appactivate-Befehl nicht. Es kommt eine Fehlermeldung.
Kannst Du mir die richtige Anweisung in meine Prozedur einbauen?
danke.

bahasu

Zitat von: hoppelhase am August 06, 2012, 20:24:45
Es kommt eine Fehlermeldung.

Hi,

wie lautet die Meldung?

Im einfachsten fall liegt es daran, dass der Name in "..." falsch war.
Im schlimmeren Fall muss wohl mehr als ein Einzeiler her.

Harald
Servus

hoppelhase

Laufzeitfehler 5
Ungültiger Prozeduraufruf oder ungültiges Argument

So hab ichs eingefügt (zimlich am Ende):



Dim VORLAGE As String
        Set wordobj = CreateObject("Word.Application")
            VORLAGE = aktVerz() & "\Bescheid.dot"
                           
            For i = 1 To 5000000
            Next
            DoCmd.Beep
                           
        Set worddoc = wordobj.Documents.Add(Template:=VORLAGE)
            worddoc.Bookmarks("Gebühr").Range = Me!Gebühr & ""
            worddoc.Bookmarks("UR").Range = Me!UR & ""
            worddoc.Bookmarks("Vertragsdatum").Range = Me!Vertragsdatum & ""
            worddoc.Bookmarks("Käufername").Range = Me!Käufername & ""
            worddoc.Bookmarks("Käuferstraße").Range = Me!Käuferstraße & ""
            worddoc.Bookmarks("Käuferort").Range = Me!Käuferort & ""
            worddoc.Bookmarks("Käuferanrede").Range = Me!Käuferanrede & ""
            worddoc.Bookmarks("Käuferanrede2").Range = Me!Käuferanrede2 & ""
            worddoc.Bookmarks("KZ").Range = Me!KZ & ""
            worddoc.Bookmarks("fällig").Range = Me!fällig & ""
                       
           
        worddoc.Parent.ChangeFileOpenDirectory aktVerz
               
        wordobj.Visible = True
        Set worddoc = Nothing
        Set wordobj = Nothing
       
        AppActivate "Microsoft Word"
       
End Sub

hoppelhase

Hallo,
Problem ist gelöst . ich habe

AppActivate "Word"

verwendet, dann gings (also ohne "Microsoft").

Danke an alle.