/ / Macro para copiar datos de Word a Excel según los encabezados y el texto circundante: excel, vba, excel-vba, ms-word

Macro para copiar datos de Word a Excel según los títulos y el texto que lo rodea - excel, vba, excel-vba, ms-word

Soy un novato completo en vba y macro, así queQuisiera pedir ayuda. Básicamente, me dan un archivo de MS Word que contiene 30 casos cada semana en los que tengo que obtener algunos datos y colocarlos en columnas en Excel. Quiero automatizar esta tarea.

Básicamente, el archivo de MS Word se ve así:

https://imgur.com/a/0msJs

Me lleva mucho tiempo copiar estos artículos.

Estoy pensando en 2 enfoques:

  1. Agregue etiquetas en los títulos y citas, ya que realmente no tienen encabezados ni nada que pueda distinguirlos: / titulo A vs. B y / citar 123 A.B.C. 234 (Resaltado amarillo y morado en la foto). Y ordene a la macro que tome el párrafo después de / title y / cite.

  2. Indica a Macro que busque el párrafo completo después de "VISIÓN GENERAL:"ya que estos datos se distinguen por esta cadena.

Resumen: Quiero que la macro se ejecute en MS Word, copie todos los títulos de casos (amarillo) en una columna en una hoja de Excel existente, copie todas las citas (púrpura) en otra columna, copie todas las vistas generales (rojo) en otra columna, etc.

Ejemplo de archivo excel y word utilizado: archivo

Nota: los nombres de casos y la disposición en el archivo adjunto arriba no coincidirán ya que ya he editado y ordenado el archivo de Excel. Solo necesito la macro para copiar los datos y luego la ordenaría más tarde. El MS Word viene como está.

Respuestas

0 para la respuesta № 1

No voy a escribir el código para usted, sino acomience a utilizar este código, si lo pega en un módulo vb en Word, copiará cualquier texto seleccionado en el documento de Word actual en una hoja de cálculo en blanco en Excel.

Sub copytext2XL()
Dim r As Range "nb this is a Word range, not an Excel range
Dim xl
Dim wb, ws, xlr
Set xl = CreateObject("Excel.Application")
xl.Visible = True
Set wb = xl.workbooks.Add
Set ws = wb.worksheets(1)
Set xlr = ws.Range("a1")

Set r = Selection.Range
r.Copy
xlr.PasteSpecial 3

End Sub

0 para la respuesta № 2

Yo diría que usted necesita tener todo en Excel, como tal.

Sub Sentence_Click()

Dim num As Variant
"Microsoft Word object
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
"Word document object
Dim WordNam As String
WordNam = "C:UsersExcelDesktopSeptember Week 1 2017.docx"

"Open word document
objWord.Documents.Open WordNam
j = 1
n = objWord.Documents(WordNam).Paragraphs.Count
For Each num In Array(7, 13, 23)
For i = 1 To n
If i = num Then
ThisWorkbook.Worksheets(1).Cells(j, 1) = objWord.Documents(WordNam).Paragraphs(i)
Debug.Print num
j = j + 1
End If
Next i
Next num
"Close objects
objWord.Documents.Close
objWord.Quit SaveChanges:=wdDoNotSaveChanges


End Sub

Luego, analice los datos en Excel, de la forma que elija.

Como puede ver, estoy importando según el número de párrafo y no según el color. Creo que has añadido esos colores; No creo que el documento te llegue así.