Macro crear archivo word junto al archivo excel

Me gustaría que me ayudaran a resolver lo siguiente, quiero con un botón crear una archivo word pero que se ubique en el mismo lugar donde esta el archivo excel, pero si ya existe entonces lo abra y si ya esta abierto entonces muestre el mensaje que ya esta abierto.

Tengo este codigo pero ne me funciona lo de crear el archivo. Ya he seleccionado la referencia Microsoft word 15.. En las referencias. Tengo excel 2013 de 64

Esto no funciona

CreateObject("Word.Application").Documents.Add
CreateObject("Word.Application").SaveAs "Archivo"
MsgBox ("Archivo creado")

y lo de verificar si ya esta abierto

2 Respuestas

Respuesta
1

Sé que las reglas son de no ampliar la pregunta pero no entiendo la razón por la que no se subió el codio al que me refiero.

Por favor disculpar el caso

Este el es el código que quiero que funcione

Private Sub CommandButton2_Click()
Dim Archivo As String
Dim objWord As Word.Application
    Archivo = ThisWorkbook.Path & "\PlanClase.docx"
    CreateObject("Word.Application").Documents.Add
    CreateObject("Word.Application").SaveAs "Archivo"
   With CreateObject("word.application")
    If Dir(Archivo) = "" Then
    'Si el archivo no existe en la ruta donde esta el archivo excel,
 'entonces que se cree el archivo con el nombre especificado
    CreateObject("Word.Application").Documents.Add
    CreateObject("Word.Application").SaveAs "Archivo"
         MsgBox ("Archivo creado")
       Else
'Si el archivo ya existe entonces abrirlo, pero comprobar si ya esta abierto
    'If Archivo Is Nothing Then
    'ruta = Word.Application.Path
    'Word.Application.Open Filename:=Archivo
    'Else
    '    MsgBox "El archivo ya estaba abierto"
  '  End If
  'Exit Sub
    'Else
     .Documents.Open Archivo
        End If
       .Visible = True
       .Activate
      End With
End Sub
Respuesta
1

H o  la:

Te anexo la macro

Sub CrearDocumento()
'Por.Dante Amor
    ruta = ThisWorkbook.Path & "\"
    arch = "PlanClase.docx"
    '
    abierto = False
    Set WordApp = GetObject(, "Word.Application")
    For Each ventana In WordApp.documents
        n = ventana.Name
        If ventana.Name = arch Then
            MsgBox "El archivo ya está abierto"
            Exit Sub
        End If
    Next
    Set WordApp = Nothing
    '
    Set WordApp = CreateObject("Word.Application")
    If Dir(ruta & arch) <> "" Then
        'si ya existe lo abre
        WordApp.Visible = True
        WordApp.Activate
        Application.DisplayAlerts = False
        On Error Resume Next
        WordApp.documents.Open ruta & arch
        werr = Err.Number
        If werr <> 0 Then
            MsgBox "El archivo está abierto en otra aplicación de word"
            Exit Sub
        End If
    Else
        'Si no existe lo crea
        WordApp.Visible = True
        WordApp.Activate
        WordApp.documents.Add
        WordApp.ActiveDocument.SaveAs ruta & arch
    End If
    Set WordApp = Nothing                  'liberar el objeto Word
End Sub

La macro revisa en la primera ventana de Word si está abierto el archivo. Si no está abierto, pregunta si existe, si existe entonces lo abre, si no existe entonces lo crea.

Para revisar todas las ventanas de word que tienes abiertas, tendrás que investigar sobre las Clases de aplicación, puedes ver los ejemplos en este enlace:

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/60.htm 

Los nombres de clase para Word, varían según la versión de windows, puedes consultarlos en este enlace:

http://david.xn--cantn-3ta.com/blog/informatica/nombre-clase-classname-aplicaciones-office/1072/ 


Como puedes ver no es sencillo verificar si un archivo de word está abierto.


' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

¡Gracias! Quedo excelente, por si el archivo sea manejado en  un computador que tiene otras versiones de windows, segun he revisado los links que me has enviado encuentro que 

Word97 OpusApp

Word2000 OpusApp

WordXP OpusApp

Word2003 OpusApp

Word2007 NetUIHWND

no esta del 2013, sin embargo no entiendo donde pudiste haberlo usado.

wordApp es una variable puesta por quien programa, entonces en donde influye lo explicado?

Es la duda.

Te agradezco mucho funciona perfecto!!

La explicación fue porque, puedes abrir un word y desde esa aplicación abrir más archivos. Entonces solamente tienes abierta una aplicación de word con varios archivos, pero puede ser que abras otra aplicación de word y abras más archivos, entonces vas a tener 2 aplicaciones de word. Lo que intenté explicar, es que puede ser que la macro busque en la aplicación1 y el archivo se encuentra en la aplicación2, por eso envié los enlaces para que te des una idea de que hay que buscar el archivo en todas las aplicaciones.

¡Gracias! Ok comprendo, en todo caso si habrán más archivos word pues pienso tomar el nombre desde un combobox y ponerlo en esta parte

arch = "PlanClase.docx"

asi 

arch = "CbxAsign.value &.docx"

aunque voy a probarlo. El combobox despliega el nombre de al menos cuatro asignaturas, ese nombre deberá ser tomado por la variable para darle el nombre al archivo.

He visto que desde una celda de la hoja se ha logrado dar nombre a los archivos, pero aquí pienso usar lo seleccionado en el combobox.

Aunque veo que estando dentro de las comillas, lo tome como nombre al CbxAsig.value&

Gracias por continuar en el tema

Saludos, Funcionó muy bien con el combobox, colocando así

arch = CbxAsign.value

Pero solo para ingresar el nombre del archivo.

Pues, me ha sucedido que luego de ingresar informacion al word, lo vuelvo a abrir con la macro y sorpresa!!! abre el archivo con el mismo nombre seleccionado en el combobox pero la hoja resulta limpia en blanco todo se ha borrado. Ahora bien con el código original que me diste no pasa eso. El asunto es como cambio el nombre del archivo que quiero abrir o crear el archivo para esto ultimo no si funciona se crea el archivo pero al volver a abrir el mismo archivo si lo abre pero borrando absolutamente todo el contenido.

Espero me puedas ayudar o sera mejor subir otro tema en relación a esto?

Después de ingresar información tienes que guardar el archivo.

¡Gracias! Gracias si lo he guardado, pero esa solucionado usando &".docx" después del combobox.

Te agradezco mucho ahora funciona bien

Tema solucionado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas