Consulting

Results 1 to 10 of 10

Thread: Ayuda con Macro para Microsoft Word

  1. #1
    VBAX Regular
    Joined
    Nov 2017
    Posts
    14
    Location

    Ayuda con Macro para Microsoft Word

    Buenas Tardes para todos.

    Me gustaria saber si me pueden auydar a obtener lo siguiente de un documento de Word y pudiea ser extraido y mostrar los resultados en un nuevo documento o ser guardado. Yo he tratado de hacerlo pero no tengo ningun conociento en Macros/vba. Asi que les agradeceria la ayuda que me puedan brindar..

    Aqui les explico con mas detalles o que quiero lograr

    Yo receivo un documento en Word en el cual necesito buscar unas palabras especificas como :Yes, :No y Go_To para esta ultima se necesita la palabra que esta despues de Go_To que puede variar de acuerdo al documento.

    La idea es buscar todas los :Yes al final de esa oracion tiene el Go_To que indica hacia que parte del documento continua or ira. y lo mismo para :No que al final de esa oracion que contiene el :No termina en el Go_To, por ejemplo.

    La linea que me interesa copiar en el nuevo word documento o Excel seria la siguiente:

    Yes/Go_To Pudo Salir/Yes/ Go_To Problemas de Caida/Yes/Go_To Terminar
    Luego cuando terminar esa linea entonces empezar con :No
    No/Go_To No Pudo Salir/No/Go_To Incentivo/

    Esa secuencia me ayudara a recorrer todo el documento, por eso necesito obtener todas las respuestas y los Go_To relacionados a cada respuesta.

    Aqui les copio un ejemplo de como es el documento word que recibo en el cual las unicas palabras constantes son :Yes, :No y Go_To


    Word Ejemplo:

    Bienvenido: Pregunta Pregunta Pregunta Pregunta?
    (Respuesta:Yes) Texto Texto Texto Texto [Go_To Pudo Salir]
    (Respuesta:No) Texto Texto Texto Texto [Go_To No Pudo Salir]

    Pudo Salir: Pregunta Pregunta Pregunta Pregunta?
    (Respuesta:Yes) Texto Texto Texto Texto [Go_To Problemas de Caida
    (Respuesta:No) Texto Texto Texto Texto [Go_To Incentivo

    No Pudo Salir: Pregunta Pregunta Pregunta Pregunta?
    (Respuesta:Yes) Texto Texto Texto Texto [Go_To Incentivo
    (Respuesta:No) Texto Texto Texto Texto[Go_To Incentivo

    Incentivo : Texto Texto Texto Texto [Go_To Ayuda

    Problemas de Caida:
    Pregunta Pregunta Pregunta Pregunta?
    (Respuesta :Yes)
    Texto Texto Texto Texto [Go_To Terminar
    (Respuesta:No) Texto Texto Texto Textos [Go_To Terminar

    Ayuda: Texto Texto Texto Texto

    Terminar: Texto Texto Texto Texto


    Le agradezco de antemano cualquier ayuda que me puedan brindar....


    Gracias Anticipadas.
    Jose
    jabe00

  2. #2
    Knowledge Base Approver VBAX Guru macropod's Avatar
    Joined
    Jul 2008
    Posts
    3,822
    Location
    ¿Tiene un documento real con una muestra representativa del contenido que podría adjuntar aquí?
    Cheers
    Paul Edstein
    [MS MVP - Word]

  3. #3
    VBAX Regular
    Joined
    Nov 2017
    Posts
    14
    Location
    Quote Originally Posted by macropod View Post
    ¿Tiene un documento real con una muestra representativa del contenido que podría adjuntar aquí?

    Gracias por responder.

    Estoy adjuntando un document el cual tuve que modificar parcialmente ya que no puedo adjuntar el documento original.

    El documento original cuenta con muchos mas modulos, pero es repetitivo, solo varia el contenido y las preguntas/respuestas.


    Lo que quiero conseguir al final es obtener un listado con todas las posibles combinaciones de respuestas con miras a alimtentar con esas respuesta otro programa que revisa de manera automatica cada contenido de las respuestas.

    Basado en el documento adjuntado un ejemplo de la secuencia seria de la siguiente manera:


    [Q(Puedo_Continuar_SP) > [R(Puedo_Continuar_SP:Yes) > [Go_To Prueba 2 SP]] > [Modulo Prueba 2 SP ] > [Q(Tipo_Ayuda_SP) > [R(Tipo_Ayuda_SP:Yes) > [Go_To Prueba 3 SP ]] > [Modulo Prueba 3 SP] > [R(Horario_SP:Yes) > [Go_To Ayuda_Tarde_SP]] > [Q(Ayuda_Tarde _SP) > [R(Repeat_No_Doctor_SP:Yes) > [Modulo Salir SP]

    Eso traducido a lo que necsito para alimentar el otro programa seria

    /Y/Y/Y/Y

    Osea, solo me interesa saber si respondio si o no y hacia donde lleva dicha respuesta, pues como puedes ver en el ejemplo anterior las respuestas fueron :

    [R(Puedo_Continuar_SP:Yes)
    [R(Tipo_Ayuda_SP:Yes)
    [R(Horario_SP:Yes)
    [R(Repeat_No_Doctor_SP:Yes)

    Lo cual da como resultado /Y/Y/Y/Y/

    Claro, como dije anteriormente, lo que quiero conseguir son todas las posibles combinaciones para poder alimentar el programa siguiente con todas ellas..



    Como ejemplo mira unas cuantas lineas de las que tengo que hacer manualmente en el cual obtengo o trato de obtener todas las posibles combinaciones.

    /Y/N/N/N/Y/Y/Y/Y/Y/Y/
    /N/Y/N/N/Y/Y/Y/N/
    /N/N/Y/N//N/Y/

    Donde Y quiere decir que respondio Si y
    N quiere dicir que la respuesta es No


    Gracias anticipadas
    Attached Files Attached Files

  4. #4
    VBAX Regular
    Joined
    Nov 2017
    Posts
    14
    Location
    Algo para tomar en cuenta, no se tiene que poner los resultados en un archivo de excel, puede ser en un TXT que deberia contener el nombre del archivo word en el cual se esta ejecutando.

  5. #5
    Knowledge Base Approver VBAX Guru macropod's Avatar
    Joined
    Jul 2008
    Posts
    3,822
    Location
    Es difícil saber por su publicación y su documento adjunto exactamente lo que desea. Pruebe la macro adjunta con su documento adjunto y compruebe si proporciona el resultado correcto para lo que contiene ese document. Tenga en cuenta, por ejemplo, que [Modulo Prueba 3 SP] contiene ambos [R (Horario_SP: No y [R (Horario_SP: Yes
    Sub Demo()
    Application.ScreenUpdating = False
    Dim i As Long, StrTxt As String
    With ActiveDocument.Range
      With .Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "\[R*:[YN]"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchWildcards = True
        .Execute
      End With
      Do While .Find.Found
        .MoveStartUntil ":", wdForward
        StrTxt = StrTxt & Replace(.Text, ":", "\")
        .Collapse wdCollapseEnd
        .Find.Execute
      Loop
    End With
    Application.ScreenUpdating = True
    MsgBox StrTxt
    End Sub
    Cheers
    Paul Edstein
    [MS MVP - Word]

  6. #6
    VBAX Regular
    Joined
    Nov 2017
    Posts
    14
    Location
    Quote Originally Posted by macropod View Post
    Es difícil saber por su publicación y su documento adjunto exactamente lo que desea. Pruebe la macro adjunta con su documento adjunto y compruebe si proporciona el resultado correcto para lo que contiene ese document. Tenga en cuenta, por ejemplo, que [Modulo Prueba 3 SP] contiene ambos [R (Horario_SP: No y [R (Horario_SP: Yes
    Sub Demo()
    Application.ScreenUpdating = False
    Dim i As Long, StrTxt As String
    With ActiveDocument.Range
      With .Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "\[R*:[YN]"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchWildcards = True
        .Execute
      End With
      Do While .Find.Found
        .MoveStartUntil ":", wdForward
        StrTxt = StrTxt & Replace(.Text, ":", "\")
        .Collapse wdCollapseEnd
        .Find.Execute
      Loop
    End With
    Application.ScreenUpdating = True
    MsgBox StrTxt
    End Sub
    Gracias Paul por la ayuda.

    Si, se que es algo complejo, y le pido disculpas por eso.

    EL resultado extraido esta en el formato esperado, pero no esta tomando en cuenta la secuencia que deberia llevar basado en las respuestas que la persona de. Per ejemplo,

    Normalmente despues de cada Respuesta hay un Go_To que indica hacia donde debe moverse basado en la respuesta que de, en algunas ocacionhes despues de una respuesta viene otra pregunta o comentario.

    Le adjunte dos imagenes uno con sobresaltando donde deberia ir cuando la persona dice SI a cada una de las respuestas y otra imagen para cuando la persona dice NO



    La idea es generar un archivo de Texto con todas las posibles respuestas, pero esta deben tener un Orden de:

    Si or No Como respuesta y deberia ir al Go_To relacionado a esa respuesta y asi continuar hasta finalizar el documento y generar la secuencia de respuestas en el formato //// entonces repetir el proceso con la siguiente Respuesta y geneerar el //// y seguirlo haciendo hasta tanto haya agotado todas las respuestas.

    Por ejemplo en este ejemplo para tocar todas las respuestas deberia generarse un TXT con las siguientes secuencias


    /Y/Y/Y/Y/Y/ Primera secuencia
    /N/ Segunda Secuencia
    /Y/N/N/ Tercera Secuencia
    /Y/Y/N/ Cuarta Secuencia
    /Y/Y/Y/Y/N Quinta Secuencia

    Le estoy adjuntando una imagen donde le muestro cada una de las partes que tocan cada una de la secuencias en el documento para que tenga una idea del recorrido necesario que hay que hacer en el documento para generar cada una de las secuencias para asi poder cubrir todo el documento.

    La idea es generar en ese mismo sentido la entrada para la siguiente aplicacion.


    Otra vez, se qeu es algo complejo, pero hay un patron claro a seguir, Cada Pregunta [Q lleva Respuesta :Yes or :No y cada Respuesta lleva a un Go_To o a otra Pregunta [Q que a la vez tiene una respuesta :Yes or :No.



    Gracias nuevamente.
    Jose
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	Secuencia_Respuesta_SI.jpg 
Views:	74 
Size:	20.0 KB 
ID:	21009   Click image for larger version. 

Name:	Secuencias 1 a 5.jpg 
Views:	75 
Size:	20.2 KB 
ID:	21012   Click image for larger version. 

Name:	Secuencia_Respuesta_NO.jpg 
Views:	70 
Size:	19.4 KB 
ID:	21011  

  7. #7
    Knowledge Base Approver VBAX Guru macropod's Avatar
    Joined
    Jul 2008
    Posts
    3,822
    Location
    No solo parece ser una tarea compleja, sino que también parece haber algunas lagunas en las especificaciones. Por ejemplo, su documento tiene:
    [DR (Received_Materials_SP: No) Entiendo [Go_To Salir SP]]
    pero no hay una entrada correspondiente para:
    [DR (Received_Materials_SP: Yes)

    Del mismo modo, tienes:
    [R (Puedo_Continuar_SP: Yes) Que Bueno. [Q (Necesita_Ayuda_SP) Necesita ayuda?
    pero nada equivalente para:
    [R (Puedo_Continuar_SP: No)

    En última instancia, desarrollar una macro para esto puede llevar más tiempo que hacer el trabajo manualmente.
    Cheers
    Paul Edstein
    [MS MVP - Word]

  8. #8
    VBAX Regular
    Joined
    Nov 2017
    Posts
    14
    Location
    Quote Originally Posted by macropod View Post
    No solo parece ser una tarea compleja, sino que también parece haber algunas lagunas en las especificaciones. Por ejemplo, su documento tiene:
    [DR (Received_Materials_SP: No) Entiendo [Go_To Salir SP]]
    pero no hay una entrada correspondiente para:
    [DR (Received_Materials_SP: Yes)

    Del mismo modo, tienes:
    [R (Puedo_Continuar_SP: Yes) Que Bueno. [Q (Necesita_Ayuda_SP) Necesita ayuda?
    pero nada equivalente para:
    [R (Puedo_Continuar_SP: No)

    En última instancia, desarrollar una macro para esto puede llevar más tiempo que hacer el trabajo manualmente.

    Estas en lo correcto el documento tenia unos cuantos errores, los cuales arregle y a la vez hize algunas modificaciones para que puedas leerlo con mas facilidad.

    Dejame saber si encuentras cualquier otro error.


    Gracias por tu ayuda, realmente asi es que lo hago en la actualidad, manualmente, este documento atachado solo tiene 1 pagina, pero en el dia a dia trabajo con documentos que tienen a veces hasta 40 paginas con la misma secuencia Preguntas, Respuestas y Go_To, lo unico que varia son los nombres, por eso pense que no era algo tan dificil y por eso me anime a pedir ayuda.

    Entiendo que tal vez es mucho trabajo y se complica mucho mas al no poder trabajar con un documento real, el cual se hace todavia mas complicado, por eso quiero que sepas que agradezdo de manera infinita la ayuda que me prestas.

    No te sientas obligado a ayudarme, al yo no tener ningn conocimiento hacerca de lo que se debe hacer, te agradeceria si me puedes poner en la direccion correcta.


    Gracias anticipadas.
    Attached Files Attached Files

  9. #9
    Knowledge Base Approver VBAX Guru macropod's Avatar
    Joined
    Jul 2008
    Posts
    3,822
    Location
    Lo siento, pero esta sería una tarea muy compleja, por lo que debes considerar contratar a un programador. En su primera página solo, podría tener estas 8 combinaciones:
    /N
    / Y / Y / N
    / Y / Y / Y / N
    / Y / Y / Y / Y / Y
    / Y / Y / Y / Y / N
    / Y / N / Y / N
    / Y / N / Y / Y / Y
    / Y / N / Y / Y / N
    y dices que tienes 40 páginas ...
    Last edited by macropod; 12-01-2017 at 04:37 PM.
    Cheers
    Paul Edstein
    [MS MVP - Word]

  10. #10
    VBAX Regular
    Joined
    Nov 2017
    Posts
    14
    Location
    Quote Originally Posted by macropod View Post
    Lo siento, pero esta sería una tarea muy compleja, por lo que debes considerar contratar a un programador. En su primera página solo, podría tener estas 8 combinaciones:
    /N
    / Y / Y / N
    / Y / Y / Y / N
    / Y / Y / Y / Y / Y
    / Y / Y / Y / Y / N
    / Y / N / Y / N
    / Y / N / Y / Y / Y
    / Y / N / Y / Y / N
    y dices que tienes 40 páginas ...

    Muchas gracias Paul por tu ayuda, si, se que es algo complejo, pero queria ver si era posible hacer algo.

    Con relacion a contratar a un programador, pues realmente no es posible pues practicamente soy el unico que trabaja con ese tipo de documentos. Y hablando de esos documentos realmetne no son tan grandes asi todo el tiempo y ademas creo que el tamaño no deberia importar cuanto se pueda obtener la secuencia pues entiendo que seguiria leyendo mientras encuentre un Go_to.


    En cuanto a las diferencias combianaciones que encontraste croe que tal vez no me explique bien, pues se deberia pensar en ese contenido como si fuera una carretera de una via, cuando eligues una ruta deberias seguirl hasta el final, luego entonces eliges otra ruta y asi hasta agotar tosas las posibles rutras, pero es una ruta a la vez y cuando terminas esa debe selecionar otra ruta y asi.


    Muchas Gracias por tu tiempo,

    Realmente te agradeceria si puedes ponerme en el camino correcto haceca de que deberia estudiar y/o aprender para ver si puedo tratar de hacer yo mismo dicho sub, podrias?


    Hay una secuencia que es comun en todos los archivos que son:

    [Q Precedido de una Pregunta
    :Yes Que seria una de las posibles respuesta a la pregunta
    :No Otra posible respuesta a la pregunta.
    Go_To Indica hacia donde debes dirigirte basado en tu respuesta

    El cual toda [Q viene siempre con un :Yes y un :No y cada uno de esos es precedido de un Go_To que indica donde vas al responder :Si o :No, que normamente va hacia otra [Q Pregunta.

    Osea, hay un patron a seguir el cual se repite hasta finalizar el documento..


    Si fuerea posible buscar y almacenar el :Yes y luego al final de ese parrafo buscar el Go_To que tiene al lado hacia donde debes ir como este [Go_To Necesita_Ayuda_SP]]
    que te dice que ahora debes dirigirte hacia Necesita_Ayuda_SP donde ahi se repite lo mismo, tienes otra pregunta [Q con dos respuesta :Yes que a su vez tendra otro Go_To para ir a otro lugar despues de ahi. Luego es repetir lo mismo, pero en este caso usando :No


    Gracias!
    Jose
    Last edited by macropod; 12-01-2017 at 04:39 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •