Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/04/2004, 03:06
ajojara
 
Fecha de Ingreso: febrero-2004
Mensajes: 12
Antigüedad: 20 años, 4 meses
Puntos: 0
En un módulo declara las variables:
Public fword As Word.Application
Global ExisteWord As Boolean
Dim WordActivo As Boolean

Y crea las siguientes funciones:

Public Sub AbrirWord()
On Error GoTo WordNoEjecutando
Dim Donde As String
Donde = "Buscando Word"
ExisteWord = True
WordActivo = True

Set fword = GetObject(, "word.application")

If Donde = "Abrir Word" Then
ExisteWord = False
Donde = "Abriendo Word"
Set fword = CreateObject("word.application")
ExisteWord = True
End If

Exit Sub

WordNoEjecutando:
Select Case Err.Number
Case 429
If Donde = "Buscando Word" Then
Donde = "Abrir Word"
Err.Clear
WordActivo = False
Resume Next
ElseIf Donde = "Abriendo Word" Then
MsgBox "Error al abrir Word:" & Chr$(10) _
& "No se puede abrir Word." & Chr$(10) & Chr$(10) _
& "Numero de error: " & Err.Number & Chr$(10) _
& "Descripción: " & Err.Description, vbCritical
Exit Sub
End If
ExisteWord = False
Case Else
If Err.Number <> 0 Then
MsgBox "Error al abrir Word:" & Chr$(10) & Chr$(10) _
& "Numero de error: " & Err.Number & Chr$(10) _
& "Descripción: " & Err.Description, vbCritical
End If
End Select
End Sub

Public Function CerrarWord()
On Error Resume Next
If Not WordActivo Then
fword.Application.Quit wdDoNotSaveChanges
End If
DoEvents
End Function

Puedes utilizarlas después, por ejemplo:

AbrirWord
If ExisteWord Then
...
End If

Y si salta algún error puedes usar CerrarWord si no queda cerrado:

Errores:
MsgBox "Error al Generar Documento" & Chr$(10) & Chr$(10) _
& "Numero de error: " & Err.Number & Chr$(10) _
& "Descripción: " & Err.Description & " ** " & G_Nombre_Sub_Error, vbCritical
Resume Next
CerrarWord

Espero que te sirva de ayuda
Saludos