PDA

Vollständige Version anzeigen : Access steuert Word


steffl
26.08.2001, 12:34
Wenn ich mit nachfolgendem Code ein Word dokument öffne, funktioniert das genau einmal. wenn ich dann den DS wechsle und den selben Befehl nochmals verwende erhalte ich die Fehlermeldung:"Der Remote-Server-Computer reagiert nicht oder ist nicht verfügbar"
Laut Windows 2000 TaskManager läuft aber ein Word Prozess. wenn ich diesen Word Prozess händisch beende funktioniert der Code wieder genau ! Mal.
Private Sub cmd_WordBemerkungen_Click()
Dim objword As Object
Dim Dateiname As String
Dim Pfad As String
Dim fso As New FileSystemObject
Pfad = fso.BuildPath(WordPfad, Me.ID_Teilnehmer_PersDat & ".doc")
Dateiname = Me.ID_Teilnehmer_PersDat


If fso.FileExists(Pfad) Then
If Not WordGeladen() Then
Set objword = CreateObject("Word.Application")
Word.Application.Visible = True
Word.Application.Activate
Word.Application.Documents.Open WordPfad & Dateiname & ".doc"
Word.Application.Selection.Goto What:=wdGoToBookmark, Name:="Brieftext"
Set objword = Nothing
Else
Set objword = GetObject(, "Word.Application")
Word.Application.Visible = True
Word.Application.Activate
Word.Application.Documents.Open WordPfad & Dateiname & ".doc"
Word.Application.Selection.Goto What:=wdGoToBookmark, Name:="Brieftext"
Set objword = Nothing
End If
Else
Dim antw As Byte
antw = MsgBox("Das entsprechende Word Dokument existiert nicht! Wollen Sie es jetzt erstellen?", vbYesNo + vbInformation, "Word Dokument noch nicht erstellt")
If antw = vbYes Then
cmd_neuesWord_Click
End If
End If
End Sub

Function WordGeladen() As Boolean
WordGeladen = True
If FindWindow("OpusApp", 0&) = 0 Then
WordGeladen = False
End If
End Function

Vielen Dank im voraus

stephan

Phillip-Berlin
26.08.2001, 12:45
If Not WordGeladen() Then
Set objword = CreateObject("Word.Application")
Word.Application.Visible = True
Word.Application.Activate
Word.Application.Documents.Open WordPfad & Dateiname & ".doc"
Word.Application.Selection.Goto What:=wdGoToBookmark, Name:="Brieftext"
Set objword = Nothing
Else
Set objword = GetObject(, "Word.Application")


mach es dir doch einfacher ... lass die if else geschichte weg ... übrig bleibt
dim objWord as object
Set objWord = CreateObject("Word.Application")
If objWord Is Nothing Then
MsgBox "Word kann nicht gestartet werden."
Exit Sub

ok dann machst du natürlich ggf. neue word fenster auf ..

HTH

steffl
26.08.2001, 13:49
danke für Deine rasche Antwort;
ich habe das Ganze geändert - trotzdem die Fehlermeldung Laufzeitfehler 462 Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar - inzwischen sind schon 3 Word Prozesse aktiv allerdings sind das keine geöffneten anwendungen sondern sie scheinen nur bei den laufenden Prozessen auf
- ist das problem möglicherweise ein Win 2000 Problem

grüsse aus Fulpmes
stephan

siboern
26.08.2001, 21:28
Hallo Steffi,
ich habe diesen Effekt auch schon gehabt, und zwar bei einer sehr langen Prozedur zur Steuerung von Word aus ACCESS. Folgendes hat geholfen:
Öffnen der Word-Objekts:
If Not WordObject Is Nothing Then
Set WordObject = Nothing
End If
Set WordObject = GetObject(, "Word.Application")
In der Fehlerbehandlung:
If Err = 429 Then 'Word noch nicht geöffnet
Set WordObject = CreateObject("Word.Application")
Resume Next
End If
Und dann alle Befehlen zur Word-Steuerung beginnen mit WordObject.xxxxxx.
Später habe ich dann Zeile für Zeile das Wordobject wieder weggelassen und bin zur With - End With- Form übergegangen.
Gruß Siegfried