copiar/pegar macro word
Publicado por Eduard (1 intervención) el 08/09/2009 14:35:48
Hola a todos,
Estoy haciendo una macro de word que tiene que hacer lo siguiente. El texto esta dividio en párrafos, y tengo que copiarlo a un nuevo documento e insertarlo dentro de una tabla de forma ordenada.
De estos párrafos cada cierto tiempo hay uno que és un titulo( cuya función para identificarlo tengo hecha).La estructura del documento original es esta:
Titulo 1
parrafo1
parrafo2
Titulo2
parrafo3
Titulo3
El objetivo seria que quedase asi (dentro de una tabla)
Titulo 1 parrafo1
parrafo2
Titulo2 parrafo3
Titulo3 ....
... ....
Lo que me gustaria saber es como puedo hacer para hacer un selection y un copi de todo el texto que hay enmedio de los 2 titulos (manteniendo el formato) para poder hacer el paste en la celda de la tabla correspondiente( en cada celda tiene que haber varios parrafos con diferentes formatos). Agradeceria mucho si alguien me pudiera ayudar.
El codigo que tengo actualmente és el siguiente:
'Insert a 1 x 2 table, fill it with data and change the column widths.
Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("endofdoc").Range, 2, 2)
i = 1
r = 1
ctr = 0
'put the tittles in the top of the table
oTable.Cell(r, 1).Range.text = "ID"
oTable.Cell(r, 2).Range.text = "Text"
While (i <= w.Paragraphs.Count)
If esTitol(w.Paragraphs(i).Range.text) = True Then
oTable.Rows.Add
r = r + 1
w.Paragraphs(i).Range.Copy
oTable.Cell(r, 1).Range.PasteAndFormat (wdFormatOriginalFormatting)
i = i + 1
Else
ctr = 1
With Selection.Find
.ClearFormatting
.text = w.Paragraphs(i - 1).Range.text
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute
Selection.MoveEnd Unit:=wdParagraph, Count:=1
'selects the whole paragraph
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
While esTitol(w.Paragraphs(i + ctr).Range.text) = False
Selection.MoveDown Unit:=wdParagraph, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
ctr = ctr + 1
Wend
Selection.Copy
oTable.Cell(r, 2).Range.PasteAndFormat (wdFormatOriginalFormatting)
i = i + ctr
End If
Wend
Lo que me falla és que en cada selección me coje también los párrafos de título que hay antes y después del texto que yo quiero, y a veces alguna cosa mas también.
Muchas gracias por adelantado.
Estoy haciendo una macro de word que tiene que hacer lo siguiente. El texto esta dividio en párrafos, y tengo que copiarlo a un nuevo documento e insertarlo dentro de una tabla de forma ordenada.
De estos párrafos cada cierto tiempo hay uno que és un titulo( cuya función para identificarlo tengo hecha).La estructura del documento original es esta:
Titulo 1
parrafo1
parrafo2
Titulo2
parrafo3
Titulo3
El objetivo seria que quedase asi (dentro de una tabla)
Titulo 1 parrafo1
parrafo2
Titulo2 parrafo3
Titulo3 ....
... ....
Lo que me gustaria saber es como puedo hacer para hacer un selection y un copi de todo el texto que hay enmedio de los 2 titulos (manteniendo el formato) para poder hacer el paste en la celda de la tabla correspondiente( en cada celda tiene que haber varios parrafos con diferentes formatos). Agradeceria mucho si alguien me pudiera ayudar.
El codigo que tengo actualmente és el siguiente:
'Insert a 1 x 2 table, fill it with data and change the column widths.
Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("endofdoc").Range, 2, 2)
i = 1
r = 1
ctr = 0
'put the tittles in the top of the table
oTable.Cell(r, 1).Range.text = "ID"
oTable.Cell(r, 2).Range.text = "Text"
While (i <= w.Paragraphs.Count)
If esTitol(w.Paragraphs(i).Range.text) = True Then
oTable.Rows.Add
r = r + 1
w.Paragraphs(i).Range.Copy
oTable.Cell(r, 1).Range.PasteAndFormat (wdFormatOriginalFormatting)
i = i + 1
Else
ctr = 1
With Selection.Find
.ClearFormatting
.text = w.Paragraphs(i - 1).Range.text
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute
Selection.MoveEnd Unit:=wdParagraph, Count:=1
'selects the whole paragraph
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
While esTitol(w.Paragraphs(i + ctr).Range.text) = False
Selection.MoveDown Unit:=wdParagraph, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
ctr = ctr + 1
Wend
Selection.Copy
oTable.Cell(r, 2).Range.PasteAndFormat (wdFormatOriginalFormatting)
i = i + ctr
End If
Wend
Lo que me falla és que en cada selección me coje también los párrafos de título que hay antes y después del texto que yo quiero, y a veces alguna cosa mas también.
Muchas gracias por adelantado.
Valora esta pregunta


0