Hay ocasiones en las que tenemos que copiar datos de un documento de Word a un archivo de Excel. Podemos hacer esto muy fácilmente con una macro en todas las versiones de Office. La macro abrirá un archivo excel nuevo o existente, copiará el contenido y luego guardará y cerrará el archivo. Veamos cómo se hace esto.

Option Explicit __ Sub OpenAndReadWordDoc ()

Dim tString como cadena Dim p Tan largo, r Tan largo Dim wrdApp como objeto, wrdDoc como objeto Dim wb Como libro de trabajo Dim trange Como variante _Set wb = Workbooks.Add With wb.Worksheets (1) .Range (“A1”)

Value = «Contenido del documento de Word:» .Font.Bold = True .Font.Size = 14 .Offset (1,0) .Seleccione Finalizar con_ r = 3 _Set wrdApp = CreateObject («Word.Application»)

wrdApp.Visible = True Establecer wrdDoc = wrdApp.Documents.Open («B: \ Test \ MyNewWordDoc.docx») _ _Con wrdDoc Para p = 1 a .Paragraphs.Count Establecer trange = .Range (Inicio: =. Párrafos (p ) .Range.Start, _ End: =. Párrafos (p) .Range.End)

tString = trange.Text tString = Left (tString, Len (tString) -1) _ If Instr (1, tString, ”1”)> 0 Entonces wb.Worksheets (1) .Range (“A” & r) .Value = tString r = r + 1 End If Next p .Close End With wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing wb.Saved = True End Sub Para copiar el código anterior a su archivo, presione Alt + F11 en el teclado Encendido en el lado izquierdo, verá Objetos de Microsoft Excel Haga clic derecho y seleccione Insertar Luego haga clic en Módulo * Copie el código en la ventana de código de la derecha Ahora veamos cómo funciona este código – Primero declaramos las variables que necesitamos –tstring como un cadena para contener el texto (veremos qué texto más adelante). 2 variables “p” y “r” como contadores. Estos son del tipo «largo». Luego tenemos las 2 variables de objeto wrdApp y wrdDoc. wrdApp es el objeto de aplicación de Word y wrdDoc es el objeto de documento de Word. Wb es nuestra variable de libro de trabajo para el nuevo libro de trabajo que se crea en el código. Si está abriendo un libro de trabajo existente, puede asignarle esta variable en su lugar. La última variable es el tipo de variable trange variant que tendrá los contenidos que deben transferirse de la palabra doc al archivo de Excel.

Set wb = Workbooks.Add Esto asigna el nuevo libro a la variable wb. Si no desea agregar un libro nuevo pero abrir uno existente, puede modificar esta línea de la siguiente manera: * Establecer wb – Workbooks.Open (“B: \ Test \ File1.xlsx”) _Con wb.Worksheets ( 1) .Rango (“A1”)

Value = «Contenido del documento de Word:» .Font.Bold = True .Font.Size = 14 .Offset (1,0) .Select End With_ The With wb.Worksheets (1) .range («A1») es una forma de referenciarlo. Por lo tanto, no tiene que repetirlo para cada una de las líneas de código entre las declaraciones With y End with.

Estas líneas de código ponen el texto «Contenido del documento de Word:» con una fuente en negrita y un tamaño de fuente 14 en la celda A1 de la 1 ^ st ^ hoja de trabajo en el nuevo libro de trabajo. Y luego .Offset (1,0) .Select selecciona la siguiente fila.

r = 3 A la variable «r» se le asigna un valor 3 ya que esta es la fila inicial en el archivo de Excel para los datos que se copiarán del documento de Word.

Set wrdApp = CreateObject («Word.Application») _ Si Word ya se está ejecutando en su sistema, _CreateObject * creará una nueva instancia de Word. Entonces, esta línea asigna la variable de objeto wrdApp a la aplicación de Word, que puede usar más adelante en el código.

wrdApp.Visible = True La instancia recién creada de Word no será visible cuando se cree. Para hacerlo visible, debe configurar wrdApp.Visible = True para que sea visible.

_Set wrdDoc = wrdApp.Documents.Open («B: \ Test \ MyNewWordDoc.docx») _ Creamos la nueva instancia de la aplicación de Word, pero todavía no hemos abierto un documento de Word fuente. Entonces este comando abrirá el documento de Word. El objeto wrdDoc se ha asignado a este documento para que podamos usarlo más adelante en el código.

With wrdDoc… .End With Este es nuestro bucle “With” que funcionará completamente con el objeto wrdDoc. Una vez que abra este ciclo, no es necesario que vuelva a repetir el texto «wrdDoc» en este ciclo. Puede comenzar directamente con el punto (“.”)

antes de cualquier objeto relacionado con wrdDoc. Este ciclo termina con la instrucción End With. Una vez que se ha ingresado la instrucción End With, no puede hacer referencia a los objetos después de wrdDoc con solo el «.»

For p = 1 a .Paragraphs.Count Este es el bucle «For» que recorrerá desde el 1 ^ st ^ hasta el último párrafo en el documento de Word. El archivo de Word que contiene los datos tiene 100 líneas de información, cada una almacenada como un párrafo separado. El bucle aumentará de 1 a 100 y copiará los párrafos. Si se establecen ciertas condiciones, el copiar y pegar se basará en esas condiciones.

_Set trange = .Range (Start: =. Paragraphs (p) .Range.Start, End: =. Paragraphs (p) .Range.End) _ Esto asigna el inicio y el final de cada párrafo al rango a medida que se incrementa el ciclo.

_tString = trange.text tString = Left (tString, len (tString) -1) _ Primero, el texto de trange se pasa a TString. Luego, cada párrafo tiene un carácter de párrafo al final de la oración. Esto se elimina mediante la función Izquierda. Desde el lado izquierdo, todos los caracteres excepto el último se almacenan en la variable tString.

Si Instr (1, tString, «1»)> 0 Entonces wb.Worksheets (1) .Range («A» & r) .Value = tString r = r + 1 End If Esta función IF comprueba si el texto en tString contiene el número 1. Si es verdadero, entonces copia el contenido de tString a la siguiente fila disponible en el libro de trabajo. “R” primero tenía un valor de 3. Usando r = r + 1, lo incrementamos en 1, de modo que la siguiente entrada se pueda colocar debajo de la entrada anterior.

Next p .Close La línea de código Next p aumenta al siguiente párrafo.

.Close cierra el documento una vez que se han trabajado todos los párrafos. Esta es la salida que obtenemos en el archivo de Excel –

img1

Verá que solo los párrafos que contienen el número 1 en cualquier lugar del número se incluyen en la salida.

wrdApp.Quit Set wrdDoc = Nothing Set wrdApp = Nothing wb.Saved = True wrdApp.Quit cerrará la palabra Aplicación. Establecer wrdDoc = Nothing y Set wrdApp = Nothing liberará la memoria tomada por estas 2 variables de objeto y las establecerá en Nothing. wb.Saved = True guardará el libro de trabajo.

Con el código anterior podemos controlar qué datos se copiarán del archivo de Word al archivo de Excel.

image 48