Macro para corregir formularios

27/08/2009 - 11:21 por zopita | Informe spam
Hola a todos.

Recibo formularios con campos para datos personales (no se tocan) y campos
para responder a una serie de preguntas que hay que corregir. Para
diferenciarlos de los campos de datos personales les he asignado un estilo de
carácter “campoTXT”. Pueden coincidir con párrafo completo o ir en el medio
de una línea.
El proceso que necesito hacer es el siguiente:

1. Al abrir el archivo desprotegerlo.
2. De cada uno de los párrafos que contiene un campo con formato “campoTXT”
hacer una copia bajo el mismo con el contenido del campo como texto pelado.
3. Activar el control de cambios y hacer la corrección en esta copia.
4. Volver a proteger el documento y guardarlo.

A base de sudar la gota gorda he conseguido hacer esta macro a base de otras
macros más pequeñitas y de sentencias copiadas en distintas páginas web,
vamos, que apenas sé lo que he puesto.

El ¿lío? lo tengo en el punto 2. El proceso que he seguido viene a ser:
buscar estilo “campoTXT”/Ir al principio del párrafo/seleccionar hasta el
final del párrafo/Copiar/Salto de párrafo/Pegado especial como texto plano.
¿Habría alguna forma de conseguir que el texto correspondiente al campo de
formulario apareciera de un color que no fuera el negro?

Y otra pregunta: parte del documento está en castellano y otra en francés.
¿Influye esto en el buen funcionamiento de una macro?

Gracias :-)

Preguntas similare

Leer las respuestas

#1 Monica May
27/08/2009 - 23:09 | Informe spam
hola,



... sudar la gota gorda he conseguido hacer esta macro
a base de otras macros mas pequenitas
y de sentencias copiadas en distintas paginas web,
vamos, que apenas se lo que he puesto.
en el punto 2. El proceso que he seguido viene a ser:
buscar estilo “campoTXT”/Ir al principio del parrafo/seleccionar hasta el
final del parrafo/Copiar/Salto de parrafo/Pegado especial como texto
plano.



pues.. podrias ponernos el codigo que has hecho :) ??

alguna forma de conseguir que el texto correspondiente al campo de
formulario apareciera de un color que no fuera el negro?



Dependera del codigo que estes empleando y como lo estes empleando :) ...

.parte del documento esta en castellano y otra en frances.
Influye esto en el buen funcionamiento de una macro?



Si lo que necesitas buscar son estilos... de momento no influye en el
funcionamiento del macro...

Comentanos!

Saludos
Monica


...formularios con campos para datos personales (no se tocan) y campos
para responder a una serie de preguntas que hay que corregir. Para
diferenciarlos de los campos de datos personales les he asignado un estilo
de
caracter “campoTXT”. Pueden coincidir con parrafo completo o ir en el
medio
de una linea.
'-
El proceso que necesito hacer es el siguiente:
1. Al abrir el archivo desprotegerlo.
2. De cada uno de los parrafos que contiene un campo con
formato “campoTXT”
hacer una copia bajo el mismo con el contenido del campo como texto
pelado.
3. Activar el control de cambios y hacer la corrección en esta copia.
4. Volver a proteger el documento y guardarlo.
Respuesta Responder a este mensaje
#2 Zopita Hasta los Fideos
29/08/2009 - 07:56 | Informe spam
Hola, Mónica (y resto de los foristas):

El paso sobre el que me preguntas (hacer una copia del párrafo donde hay un
campo de formulario) lo he hecho a base de grabadora y me ha quedado así:


Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("CampoTXT")
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveUp Unit:=wdParagraph, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Selection.Copy
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:= _
wdInLine, DisplayAsIcon:=False
Selection.TypeParagraph
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.Style = ActiveDocument.Styles("Para_corregir")


Donde "CampoTXT" es el estilo de carácter que tengo asignado a los campos de
formulario y "Para_corregir" es un estilo de párrafo con texto rojo que
aplico al párrafo duplicado. Este estilo sólo tiene por finalidad ver si
todos los párrafos han quedado duplicados o si alguno se ha escapado. Por
supuesto, tiene un Loop para que el cambio se haga en todo el documento.

Como verás, el sistema es pedestre a más no poder pero me conformo con que
funcione :))

Saludos cordiales


"Monica May" escribió:

hola,



> ... sudar la gota gorda he conseguido hacer esta macro
>a base de otras macros mas pequenitas
> y de sentencias copiadas en distintas paginas web,
> vamos, que apenas se lo que he puesto.
> en el punto 2. El proceso que he seguido viene a ser:
> buscar estilo “campoTXT”/Ir al principio del parrafo/seleccionar hasta el
> final del parrafo/Copiar/Salto de parrafo/Pegado especial como texto
> plano.

pues.. podrias ponernos el codigo que has hecho :) ??

> alguna forma de conseguir que el texto correspondiente al campo de
> formulario apareciera de un color que no fuera el negro?

Dependera del codigo que estes empleando y como lo estes empleando :) ...

>.parte del documento esta en castellano y otra en frances.
> Influye esto en el buen funcionamiento de una macro?

Si lo que necesitas buscar son estilos... de momento no influye en el
funcionamiento del macro...

Comentanos!

Saludos
Monica


Respuesta Responder a este mensaje
#3 Monica May
29/08/2009 - 23:24 | Informe spam
holas :D ??

bien que me centro :))

Preguntas/anotaciones/comentarios etc..etc..etc...>>


1.) Los campos de formulario a los que te refieres son los de {FormText} ???
porque entonces son campos que han de ir con proteccion de
documento.entonces se necesitaria desproteger y vuelta proteger para
hacer los cambios de estilos ???

2.) Las copias de los parrafos porque, usea se para que necesitas copiar el
parrafo o porque necesitas duplicar los parrafos ??? por seguridad de que se
han cambiado todos los estilos ??? no le veo necesidad a duplicar los
parrafos para ver si alguno se ha colao si se hace un cambio de estilo
amoss ... se hace el cambio de estilo en todo el documento.

3) Necesitas solo cambiar un estilo por otro ?
4) Que tipo de campos son?


...los estilos de caractarer o de parrafo poco influyen ya que tu buscas el
estilo y lo sustituyes por otro estilo ...no hay mas cera que la que arde
:)) :P !! (Los estilos los creas tu en la interfaz)


Por ahora no se me ocurre ninguna pregunta mas :P !!

Comentanos...!

Saludos
Monica


El paso sobre el que me preguntas (hacer una copia del párrafo donde hay
un
campo de formulario) lo he hecho a base de grabadora y me ha quedado así:
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("CampoTXT")
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.MoveUp Unit:=wdParagraph, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Selection.Copy
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:=
_
wdInLine, DisplayAsIcon:=False
Selection.TypeParagraph
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.Style = ActiveDocument.Styles("Para_corregir")
Donde "CampoTXT" es el estilo de carácter que tengo asignado a los campos
de
formulario y "Para_corregir" es un estilo de párrafo con texto rojo que
aplico al párrafo duplicado. Este estilo sólo tiene por finalidad ver si
todos los párrafos han quedado duplicados o si alguno se ha escapado. Por
supuesto, tiene un Loop para que el cambio se haga en todo el documento.
Respuesta Responder a este mensaje
#4 Zopita Hasta los Fideos
30/08/2009 - 14:16 | Informe spam
¡Jodó, Mónica! Parecemos novios enloquecidos de amor, jajajajjajaja

No sé si nos entenderemos pero te aseguro que estoy haciendo muchas risas
con estos puñeteros formularios. A ver si ahora es la vencida.

Voy a empezar por el revés, a ver si así consigo explicarme. Supón que he
corregido la mitad de un formulario pero se me quema la comida, así que
cierro el archivo para seguir en otro momento. Al cerrar el documento se
ejecuta una macro AutoClosed que inserta un marcador en el punto donde se ha
quedado el cursor, un marcador que se puede llamar “corregido_hasta_aquí”,
protege el formulario conservando el contenido de los campos, guarda y
cierra.

Bien, esto sería el final. Ahora salto al principio.

1. Recibo un formulario cumplimentado com campos del tipo {FormText}, que
efectivamente está protegido. Un formulario que tengo que corregir. Para ello
he montado el siguiente campamento.
2. Al abrirlo se ejecuta una AutoOpen que
- desprotege el formulario
- busca si hay un marcador de nombre “corregido_hasta_aquí” y si lo hay
(signo de que ya he estado corrigiendo) salta hasta él. Si no hay marcador el
cursor queda al principio del formulario ya desprotegido.
- aquí es donde se deberían duplicar los famosos párrafos si no se ha
encontrado marcador –es la primera vez que abro el archivo luego no existen
esos duplicados-.
- se activa el control de cambios

¿Por qué estos duplicados? Sencillamente, si la corrección se hace en el
contenido del propio campo se pierde el contenido original, pero si hago un
duplicado pegando como formato texto (el campo {xxxxxx} pasa a ser el texto
plano xxxxxx)

bla bla bla bla bla {xxxxxx} bla bla bla
bla bla bla bla bla xxxxxx bla bla bla


y hago las correcciones:

bla bla bla bla bla {xxxxxx} bla bla bla
bla bla bla bla bla yyyyyyyccccccccc bla bla bla

mi alumno puede comparar su respuesta con la respuesta verdadera.


A ver, sigo con el rollo así que vete a merendar si quieres.

Para hacer ese duplicado lo que tengo que hacer es seleccionar el párrafo
donde está el campo, copiar y pegar como texto plano, y la forma de
seleccionar los párrafos donde hay un campo es dando a los campos un estilo
de carácter. ¿Por qué no un estilo de párrafo? Porque los campos pueden estar
en cualquier tipo de párrafo, desde en un titular hasta en cualquier otro
sitio, lo que hace inviable asignarles un estilo de párrafo.

Y lo de asignar un colorito al xxxxx de la copia del párrafo:

bla bla bla bla bla {xxxxxx} bla bla bla
bla bla bla bla bla xxxxxx bla bla bla <—- a éste xxxxxx

es sencillamente para que dé al ojo el punto donde hay que hacer la
corrección. Si no es posible pues a cajcal.la.

Y bueno, salvo error u omisión ya llegamos al final. Aquí se ejecuta la
AutoClosed de la que te hablaba al principio y ¡venga! ¡a ver la tele un rato!

Esta AutoClosed pregunta el corrector si ha terminado de corregir el
formulario.
Si responde que sí, protege el formulario, lo guarda y lo cierra.
Si responde que no inserta el famoso marcador (para que el cursor vaya hasta
ahí cuando vuelva a abrirse el archivo), protege, guarda y cierra.

¡Mónica! ¡Mónicaaaaaaaaaa! ¿Todavía estás ahí???????? :D
Muchas gracias por tu interés, lo digo de corazón.

Saludos cordiales a todos (y disculpas por la chapa)


"Monica May" escribió:

holas :D ??

bien que me centro :))

Preguntas/anotaciones/comentarios etc..etc..etc...>>


1.) Los campos de formulario a los que te refieres son los de {FormText} ???
porque entonces son campos que han de ir con proteccion de
documento.entonces se necesitaria desproteger y vuelta proteger para
hacer los cambios de estilos ???

2.) Las copias de los parrafos porque, usea se para que necesitas copiar el
parrafo o porque necesitas duplicar los parrafos ??? por seguridad de que se
han cambiado todos los estilos ??? no le veo necesidad a duplicar los
parrafos para ver si alguno se ha colao si se hace un cambio de estilo
amoss ... se hace el cambio de estilo en todo el documento.

3) Necesitas solo cambiar un estilo por otro ?
4) Que tipo de campos son?


los estilos de caractarer o de parrafo poco influyen ya que tu buscas el
estilo y lo sustituyes por otro estilo ...no hay mas cera que la que arde
:)) :P !! (Los estilos los creas tu en la interfaz)


Por ahora no se me ocurre ninguna pregunta mas :P !!

Comentanos...!

Saludos
Monica


> El paso sobre el que me preguntas (hacer una copia del párrafo donde hay
> un
> campo de formulario) lo he hecho a base de grabadora y me ha quedado así:
> Selection.Find.ClearFormatting
> Selection.Find.Style = ActiveDocument.Styles("CampoTXT")
> With Selection.Find
> .Text = ""
> .Replacement.Text = ""
> .Forward = True
> .Wrap = wdFindContinue
> .Format = True
> .MatchCase = False
> .MatchWholeWord = False
> .MatchWildcards = False
> .MatchSoundsLike = False
> .MatchAllWordForms = False
> End With
> Selection.Find.Execute
> Selection.MoveUp Unit:=wdParagraph, Count:=1
> Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
> Selection.Copy
> Selection.MoveRight Unit:=wdCharacter, Count:=1
> Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:=
> _
> wdInLine, DisplayAsIcon:=False
> Selection.TypeParagraph
> Selection.MoveUp Unit:=wdLine, Count:=1
> Selection.Style = ActiveDocument.Styles("Para_corregir")
> Donde "CampoTXT" es el estilo de carácter que tengo asignado a los campos
> de
> formulario y "Para_corregir" es un estilo de párrafo con texto rojo que
> aplico al párrafo duplicado. Este estilo sólo tiene por finalidad ver si
> todos los párrafos han quedado duplicados o si alguno se ha escapado. Por
> supuesto, tiene un Loop para que el cambio se haga en todo el documento.



Respuesta Responder a este mensaje
#5 Monica May
30/08/2009 - 22:43 | Informe spam
holas ?,

Gracias a ti :) !

Bien entonces lo que necesitas es duplicar cada parrafo y a la duplicación
aplicarle al {formtext } un color rojo por ejemplo y dejar el campo de texto
sin campo sino como texto normal???

Comentanos...!

Saludos
Monica



. Al cerrar el documento se
ejecuta una macro AutoClosed que inserta un marcador
en el punto donde se ha quedado el cursor
... un marcador que se puede llamar “corregido_hasta_aquí”,
protege el formulario conservando el contenido de los campos, guarda y
cierra.
Ahora salto al principio.
1. ...formulario ... campos del tipo {FormText}, que
efectivamente esta protegido. ... Para ello
he montado el siguiente campamento.
2. Al abrirlo se ejecuta una AutoOpen que
- desprotege el formulario
- busca si hay un marcador de nombre
“corregido_hasta_aquí” y si lo hay
. salta hasta el. Si no hay marcador el
cursor queda al principio del formulario ya desprotegido.
'-
- aqui es donde se deberían duplicar los famosos parrafos si no se ha
encontrado marcador –es la primera vez que abro el archivo luego no
existen
esos duplicados-.
- se activa el control de cambios
'-
..Por que estos duplicados? Sencillamente, si la correccion se hace en el
contenido del propio campo se pierde el contenido original, pero si hago
un
duplicado pegando como formato texto (el campo {xxxxxx} pasa a ser el
texto
plano xxxxxx)
bla bla bla bla bla {xxxxxx} bla bla bla
bla bla bla bla bla xxxxxx bla bla bla
y hago las correcciones:
bla bla bla bla bla {xxxxxx} bla bla bla
bla bla bla bla bla yyyyyyyccccccccc bla bla bla
mi alumno puede comparar su respuesta con la respuesta verdadera.
'-??
...duplicado lo que tengo que hacer es seleccionar el parrafo
donde esta el campo, copiar y pegar como texto plano, y la forma de
seleccionar los parrafos donde hay un campo es dando a los campos un
estilo
de caracter. ¿Por que no un estilo de parrafo? Porque los campos pueden
estar
en cualquier tipo de parrafo, desde en un titular hasta en cualquier otro
sitio, lo que hace inviable asignarles un estilo de parrafo.
'--
Y lo de asignar un colorito al xxxxx de la copia del parrafo:
bla bla bla bla bla {xxxxxx} bla bla bla
bla bla bla bla bla xxxxxx bla bla bla <—- a éste xxxxxx
es sencillamente para que dé al ojo el punto donde hay que hacer la
correccion. Si no es posible pues a cajcal.la.
Y bueno, salvo error u omisión ya llegamos al final. Aquí se ejecuta la
AutoClosed de la que te hablaba al principio y ¡venga! ¡a ver la tele un
rato!
Esta AutoClosed pregunta el corrector si ha terminado de corregir el
formulario.
Si responde que si protege el formulario, lo guarda y lo cierra.
Si responde que no inserta el famoso marcador (para que el cursor vaya
hasta
ahi cuando vuelva a abrirse el archivo), protege, guarda y cierra.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida