Macro avanzada

28/05/2008 - 15:55 por Merillas | Informe spam
Hola,
tengo que realizar una macro en un word para en basea unos campos(si/no)
generar un excel que coge sus datos a su vez de otro excel. Es la primera vez
que uso macros y la información que encuentro es demasiado básica, alguien
podría encaminarme un poquito?? Si ademas puede pasarme algún enlace
preferiblemente en español seria la leche.
Gracias or todo, un saludo.

Preguntas similare

Leer las respuestas

#11 Fabio Ayala
07/09/2008 - 05:51 | Informe spam
Hola, buenas noches.
Gracias por tus contestaciones. Ambos códigos funcionan, pero tengo un
detalle, vamos por partes:
Si tengo un pegado especial.
Si tengo una marca de fin de parrafo.
Las rutinas para pegado especial y vista normal, solucionados.

En cuanto al reemplazo, recordar que el texto lo tengo (ya proveniente de
excel) dentro de una celda de una tabla, motivo por el cual mediante el
siguiente codigo que inicio colocando el cursor en el ultimo dato a
seleccionar me aseguro de seleccionarlo todo: Selection.HomeKey Unit:=wdRow,
Extend:=True, mismo que antepongo a cualquiera de tus codigos y funciona.

Pero:

En mi macro inicial cada cinco substituciones que forman una linea, se
conserva una marca de fin de parrafo (lñetra P inversa), la cual me es util y
que en este caso tambien desaparece, lo cual ocasiona estrago.. Lo caul me
obliga a recurrir a ti para que con tu amable apoyo se encuentre la forma de
conservar esta marca al final de cada 5 numeros de serie, brincar a la
siguiente serie y realizar los mismo hasta hacer todos los reemplazos.

Gracias


Viviendo una nueva oportunidad de vivir la vida.


"Monica May" wrote:

Oh tambien el siguiente codigo para la seleccion que decidas [
idependientemente tenga marcas de parrafo o bien saltos manuales ] >>

Para versiones de office 2000 en adelante >>

'[]

Sub demo()
Dim texto As String
texto = Selection.Text
texto = Replace(texto, Chr(13), ", ")
Selection.Text = texto
End Sub


'[]

Seleccionas los datos y ejecutas el codido ...

Comentanos...!!!

Saludos
Monica


Respuesta Responder a este mensaje
#12 Monica May
07/09/2008 - 23:13 | Informe spam
www.fermu.com
www.teladearana.es

Hola, buenas noches.
Gracias por tus contestaciones. Ambos códigos funcionan, pero tengo un
detalle, vamos por partes:
Si tengo un pegado especial.
Si tengo una marca de fin de parrafo.
Las rutinas para pegado especial y vista normal, solucionados.

En cuanto al reemplazo, recordar que el texto lo tengo (ya proveniente de
excel) dentro de una celda de una tabla, motivo por el cual mediante el
siguiente codigo que inicio colocando el cursor en el ultimo dato a
seleccionar me aseguro de seleccionarlo todo: Selection.HomeKey
Unit:=wdRow,
Extend:=True, mismo que antepongo a cualquiera de tus codigos y funciona.

Pero:

En mi macro inicial cada cinco substituciones que forman una linea, se
conserva una marca de fin de parrafo (lñetra P inversa), la cual me es
util y
que en este caso tambien desaparece, lo cual ocasiona estrago.. Lo caul me
obliga a recurrir a ti para que con tu amable apoyo se encuentre la forma
de
conservar esta marca al final de cada 5 numeros de serie, brincar a la
siguiente serie y realizar los mismo hasta hacer todos los reemplazos.

Gracias


Viviendo una nueva oportunidad de vivir la vida.


"Monica May" wrote:

Oh tambien el siguiente codigo para la seleccion que decidas [
idependientemente tenga marcas de parrafo o bien saltos manuales ] >>

Para versiones de office 2000 en adelante >>

'[]

Sub demo()
Dim texto As String
texto = Selection.Text
texto = Replace(texto, Chr(13), ", ")
Selection.Text = texto
End Sub


'[]

Seleccionas los datos y ejecutas el codido ...

Comentanos...!!!

Saludos
Monica


Respuesta Responder a este mensaje
#13 Monica May
07/09/2008 - 23:28 | Informe spam
Upsss perdon envie sin querer :))) !!

bien prueba el siguiente codigo >>

'[]
Const dividir as interger = 14

Sub dividimos_texto_celda()


Dim mySelection As Long

'Selection.SelectCell
With Selection
.Collapse wdCollapseStart
mySelection = .MoveEnd(wdWord, dividir)
Do While mySelection = dividir
.InsertAfter vbLf
.Collapse wdCollapseEnd
mySelection = .MoveEnd(wdWord, dividir)
Loop
End With

'[]


Bien si te fijas en el codigo fuera del [ Sub ] mas que fuera encima,
tenemos una constante la cual tienes que situar arriba de todo osea se al
principio del modulo y debajo de [ Option Explicit]

bien el poner 14 es el contar las palabras + la coma [,] me explico nos
queradia las series asi >>

serire1, serire2, serire3, serire4, serire5, serire6, serire7,
serire8, serire9, serire10, serire11, serire12, serire13, serire14,
etc

si quisieras la serie de cinco >> contarias las palabras mas la coma
quedando asi >>

serire1, serire2, serire3, serire4, serire5,
serire6, serire7, serire8, serire9, serire10,
etc...

->NOTAS:

1-> Se supone que la celda esta selecionada antes de ejecutar dicho codigo
que te acabo de pasar yyyy una vez que la celda ya tiene todos su datos
ya reemplazados por coma ejemplo >>

serire1, serire2, serire3, serire4, serire5, serire6, serire7, serire8,
serire9, serire10, serire11, serire12, serire13, serire14, serire15,
serire16, serire17, serire18, serire19, serire20, serire21,etc.

Luego ya puedes ejecutar dicho codigo aqui expuesto

2.-> esta linea de codigo [ 'Selection.SelectCell]

lo he puesto como comentario es una linea de codigo que si el cursor esta en
una celda , esa linea selecciona la celda [ se tendria que anadir codigo
para corregir el error que nos daria en el caso de que no estuvieras situado
en una celda ? ]

3->Luego hay un loop que obliga a seguir seleccionado y dividiendo entre 7
cada vez que selecciona...


y... pruebala y... comentanos a ver si nos vamos acercando :P !!



Saludos
Monica



Pero...
En mi macro inicial cada cinco substituciones que forman una linea, se
conserva una marca de fin de parrafo (letra P inversa), la cual me es util
y
que en este caso tambien desaparece, lo cual ocasiona estrago.. Lo caul me
obliga a recurrir a ti para que con tu amable apoyo se encuentre la forma
de
conservar esta marca al final de cada 5 numeros de serie, brincar a la
siguiente serie y realizar los mismo hasta hacer todos los reemplazos.
Respuesta Responder a este mensaje
#14 Fabio Ayala
13/09/2008 - 19:50 | Informe spam
Gracias
Hay que multiplicar las columnas que deseo por 2, (ya que el espacio que
estamos insertando además de la coma lo toma por palabra.

Me sirve.
Viviendo una nueva oportunidad de vivir la vida.


"Monica May" wrote:

Upsss perdon envie sin querer :))) !!

bien prueba el siguiente codigo >>

'[]
Const dividir as interger = 14

Sub dividimos_texto_celda()


Dim mySelection As Long

'Selection.SelectCell
With Selection
.Collapse wdCollapseStart
mySelection = .MoveEnd(wdWord, dividir)
Do While mySelection = dividir
.InsertAfter vbLf
.Collapse wdCollapseEnd
mySelection = .MoveEnd(wdWord, dividir)
Loop
End With

'[]


Bien si te fijas en el codigo fuera del [ Sub ] mas que fuera encima,
tenemos una constante la cual tienes que situar arriba de todo osea se al
principio del modulo y debajo de [ Option Explicit]

bien el poner 14 es el contar las palabras + la coma [,] me explico nos
queradia las series asi >>

serire1, serire2, serire3, serire4, serire5, serire6, serire7,
serire8, serire9, serire10, serire11, serire12, serire13, serire14,
etc

si quisieras la serie de cinco >> contarias las palabras mas la coma
quedando asi >>

serire1, serire2, serire3, serire4, serire5,
serire6, serire7, serire8, serire9, serire10,
etc...

->NOTAS:

1-> Se supone que la celda esta selecionada antes de ejecutar dicho codigo
que te acabo de pasar yyyy una vez que la celda ya tiene todos su datos
ya reemplazados por coma ejemplo >>

serire1, serire2, serire3, serire4, serire5, serire6, serire7, serire8,
serire9, serire10, serire11, serire12, serire13, serire14, serire15,
serire16, serire17, serire18, serire19, serire20, serire21,etc.

Luego ya puedes ejecutar dicho codigo aqui expuesto

2.-> esta linea de codigo [ 'Selection.SelectCell]

lo he puesto como comentario es una linea de codigo que si el cursor esta en
una celda , esa linea selecciona la celda [ se tendria que anadir codigo
para corregir el error que nos daria en el caso de que no estuvieras situado
en una celda ? ]

3->Luego hay un loop que obliga a seguir seleccionado y dividiendo entre 7
cada vez que selecciona...


y... pruebala y... comentanos a ver si nos vamos acercando :P !!



Saludos
Monica



> Pero...
> En mi macro inicial cada cinco substituciones que forman una linea, se
> conserva una marca de fin de parrafo (letra P inversa), la cual me es util
> y
> que en este caso tambien desaparece, lo cual ocasiona estrago.. Lo caul me
> obliga a recurrir a ti para que con tu amable apoyo se encuentre la forma
> de
> conservar esta marca al final de cada 5 numeros de serie, brincar a la
> siguiente serie y realizar los mismo hasta hacer todos los reemplazos.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida