# Importar datos a Excel desde Word



## cgcamal (Aug 14, 2008)

Saludos a todos,

Tengo muchos archivos de MS Word que contienen ciertos datos que están bajo un título. La situación es que quisiera extraer esos datos y pegarlos organizadamente en una hoja de Excel. 

Si son N libros de MS-Word, serían N filas en Excel. Y si son M datos que quiero extraer de cada libro de MS-Word, serían M columnas en Excel.


Alguien me puede dar una ayuda de cómo importar esto desde Excel.

Muchas gracias de antemano.


----------



## Greg Truby (Aug 17, 2008)

Hola cgcamal,

No es que no habia visto su pregunta sino que no sé como responder. No sé casi nada de documentos Word en términos de programación. Sé que hay un objeto que se llama "bookmark" pero la verdad es que decir eso es como decir «sé que algo que se llama celda en Excel» o sea no ayuda mucho. 

Creo que será más eficiente buscar ayuda en un foro de Word primero para ver si usted puede escribir un macro en Word que es capáz de agarrar los datos deseados y por lo menos mostrar los con un debug.print o msgbox. Ya una vez de que pueda hacer eso podemos ver cómo integrar con Excel.

Saludos,


----------



## cgcamal (Aug 17, 2008)

Muchas gracias por responder entonces Greg, con la última ayuda en la última pregunta que yo había hecho te quedé pendiente poque aún no me ha dado oportunidad para poder probar tus consejos, mi horario de trabajo me lo dificulta.

Con relación a la macro de Word, he estado buscando foros similares a este de Mr Excel, pero todavía no consigo lo requerido. Sólo algunos ejemplos aislados. He estado tratando de hacer como en Excel, tratando de grabar macros para ver qué código guarda y optar por modificarlo solamente, pero no es igual. Al mmento de grabar macro, Word no me deja
hacer todo lo que quisiera como lo hace Excel.

Bueno, seguiré buscando por ahí. Muchas gracias de nuevo.

Saludos cordiales.


----------



## Macropod (Sep 3, 2008)

Hola cgcamal,

¿Cómo se organizan los datos del MS-Word? ¿Si los datos están en tablas, cuántas tablas en cada documento? ¿Están todos los archivos en la misma carpeta? ¿Usted quisiera que todos los datos fueran puestos en una libro de trabajo u hoja de trabajo o en muchos?


----------



## cgcamal (Sep 3, 2008)

Hola Macropod,
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-comfficeffice" /><o></o>
<o></o>
Los libros de MS-Word contienen en promedio unas 10 páginas con variada información circundada por marcos o puesta dentro de pequeñas tablas.<o></o>
<o></o>
Pero yo sólo necesito extraer datos que están contenidos en una tabla, como la que muestro abajo, y la macro debería ser capaz de buscar las palabras “Código de país” o la abreviatura (CP) y copiar en la celda A2 de una hoja de Excel el valor numérico del código (504 en este caso). Buscar “número de Tel” o (NDT) y pegar en B2 los valores de NDT separados por coma si hay más de uno, 12345678, 87654321, …etc.* Y así sucesivamente buscar NDC, NDV, NP y NH y colocar los valores numéricos que están inmediatamente debajo de esa abreviaturas en las celdas C2, D2, E2 y F2.*

*El número de tablas o texto que tiene marcos alrededor es en promedio 21 ó 25, dependiendo la información contenida. Los archivos de Word están en el mismo directorio y los datos organizados deberían quedar en una misma hoja de Excel, donde el número de líneas generadas en la hoja de Excel debería ser igual al número de archivos de Word desde donde se deberían extraer los 6 campos mencionados arriba.*

*Ejemplo de marco de Word donde está la información:*






*Hoja de Excel como desearía organizar* *la información:*






Muchas gracias de antemano, y a ver si es posible que me den una idea de cómo hacer esto.

Saludos cordiales,


----------



## Macropod (Sep 3, 2008)

Hola cgcamal,

¿Con las tablas en MS-Word, cómo los datos para el NDT se separan? ¿Con párrafos o lengüetas? ¿Es usted que usa un archivo existente de MS-Excel, o usted necesita un nuevo?

Respetos


----------



## cgcamal (Sep 3, 2008)

Macropod,

Los marcos o tablas están separados a veces por pequeños párrafos y porque la página cambia, pero
también algunas veces aparecen una tabla o marco después de otro, no hay estándar para esto. Los valores numéricos de los campos(CP, NDT, NDC, NDV, NP y NH) que deseo poder extraer no tienen ningún formato especial de separación, mas que límite de la línea vertical y horizontal que los circunda.Pero los valores numéricos debajo de NDT y NDV podrían ser más de uno dentro del espacio que los limita y están separados sólo por el renglón dentro de un mismo cuadrito como se ve en la figura. Por facilidad si hay más de un valor numérico para NDT y NDV se presentarían en una misma
celda separados por coma al pasarlos a la hoja de Excel.

Con respecto a la otra pregunta, los datos pueden ser ordenados en cualquier libro nuevo, podríamos
decir Datos organizados.xls.
Esperando no se complique mucho.

Gracias de antemano.


----------



## Macropod (Sep 3, 2008)

Hola cgcamal,

La macro siguiente trabaja para mí, pero no sé mucho el español (soy australiano) o si el vba un de los necesita ser traducido.


```
Option Explicit
Dim i As Integer
Dim Datos()

Function ConsigaCarpeta(Optional Title As String, Optional RootFolder As Variant) As String
On Error Resume Next
ConsigaCarpeta = CreateObject("Shell.Application").BrowseForFolder(0, Title, 0, RootFolder).Items.Item.Path
End Function

Sub EncuentreDocumentos()
Dim fs
Dim x As Integer
Dim StrDoc As String
Set fs = Application.FileSearch
With fs
  On Error GoTo Abort
  .LookIn = ConsigaCarpeta(Title:="Seleccione por favor una carpeta", RootFolder:=&H400) ' o &H11
  .FileName = "*.doc"
  If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
    MsgBox .FoundFiles.Count & " documentos fueron encontrados."
    i = 1
    ReDim Datos(6, i)
    Datos(1, i) = "CP"
    Datos(2, i) = "NDT"
    Datos(3, i) = "NDC"
    Datos(4, i) = "NDV"
    Datos(5, i) = "NP"
    Datos(6, i) = "NH"
    For x = 1 To .FoundFiles.Count
      StrDoc = .FoundFiles.Item(x)
      Documents.Open FileName:=StrDoc
        Call ConsigaDatos
        With Documents.Item(StrDoc)
          .Saved = True
          .Close
        End With
    Next x
    Call EscribaDatos
  Else
    MsgBox "0 documentos fueron encontrados."
  End If
End With
Abort:
End Sub

Private Sub ConsigaDatos()
Dim oDoc As Document
Dim oTbl As Table
Dim oCel As Cell
Dim oRng As Range
For Each oTbl In ActiveDocument.Tables
  For Each oCel In oTbl.Range.Cells
    If InStr(oCel.Range.Text, "(CP)") > 0 Then
      i = i + 1
      ReDim Preserve Datos(6, i)
      Set oRng = oTbl.Cell(oCel.RowIndex + 1, oCel.ColumnIndex).Range
      oRng.End = oRng.End - 1
      Datos(1, i) = Replace(Replace(Replace(Trim(oRng.Text), vbCr, ","), vbTab, " "), ",,", ",")
    End If
    If InStr(oCel.Range.Text, "(NDT)") > 0 Then
      Set oRng = oTbl.Cell(oCel.RowIndex + 1, oCel.ColumnIndex).Range
      oRng.End = oRng.End - 1
      Datos(2, i) = Replace(Replace(Replace(Trim(oRng.Text), vbCr, ","), vbTab, " "), ",,", ",")
    End If
    If InStr(oCel.Range.Text, "(NDC)") > 0 Then
      Set oRng = oTbl.Cell(oCel.RowIndex + 1, oCel.ColumnIndex).Range
      oRng.End = oRng.End - 1
      Datos(3, i) = Replace(Replace(Replace(Trim(oRng.Text), vbCr, ","), vbTab, " "), ",,", ",")
    End If
    If InStr(oCel.Range.Text, "(NDV)") > 0 Then
      Set oRng = oTbl.Cell(oCel.RowIndex + 1, oCel.ColumnIndex).Range
      oRng.End = oRng.End - 1
      Datos(4, i) = Replace(Replace(Replace(Trim(oRng.Text), vbCr, ","), vbTab, " "), ",,", ",")
    End If
    If InStr(oCel.Range.Text, "(NP)") > 0 Then
      Set oRng = oTbl.Cell(oCel.RowIndex + 1, oCel.ColumnIndex).Range
      oRng.End = oRng.End - 1
      Datos(5, i) = Replace(Replace(Replace(Trim(oRng.Text), vbCr, ","), vbTab, " "), ",,", ",")
    End If
    If InStr(oCel.Range.Text, "(NH)") > 0 Then
      Set oRng = oTbl.Cell(oCel.RowIndex + 1, oCel.ColumnIndex).Range
      oRng.End = oRng.End - 1
      Datos(6, i) = Replace(Replace(Replace(Trim(oRng.Text), vbCr, ","), vbTab, " "), ",,", ",")
    End If
  Next oCel
Next oTbl
MsgBox "Hello"
End Sub

Private Sub EscribaDatos()
Dim xlApp As Object, xlLibro As Object, xlHoja As Object
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If xlApp Is Nothing Then Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlLibro = xlApp.WorkBooks.Add
Set xlHoja = xlLibro.Sheets(1)
Dim j As Integer
Dim k As Integer
For j = 1 To i
  For k = 1 To 6
    xlHoja.Cells(j, k) = Datos(k, j)
  Next k
Next j
End Sub
```
Respetos


----------



## cgcamal (Sep 4, 2008)

Saludos Macropod,

Tengo 2 preguntas referentes al código.

1-)Veo que son 3 macros distintas, y según el código que logro identificar
las primeras dos debo insertarlas en un módulo de VBA en MS-Word, pero la tercera sería en un módulo de Excel. ¿Es correcto?

1-EncuentreDocumentos()-->Macro en modulo de MS-Word
2-ConsigaDatos()-->Macro en modulo de MS-Word
3-EscribaDatos()-->Macro en modulo de MS-Excel

2-) Al querer probar paso a paso la primera macro con F8, me da error en el código y me apunta hacia la línea "Set fs = Application.FileSearch" al parecer FileSearch no está disponible, yo uso MS Office 2007.

Gracias de nuevo.


----------



## Macropod (Sep 4, 2008)

Hola cgcamal,

Las 3 macros están para el MS-Word. Parece que Application.FileSearch ha estado quebrado con Windows Vista. Veré si puedo encontrar el algo más para que usted utilice.

Tengo que ahora salir, así que tardará una cierta hora.

Respetos


----------



## cgcamal (Aug 14, 2008)

Saludos a todos,

Tengo muchos archivos de MS Word que contienen ciertos datos que están bajo un título. La situación es que quisiera extraer esos datos y pegarlos organizadamente en una hoja de Excel. 

Si son N libros de MS-Word, serían N filas en Excel. Y si son M datos que quiero extraer de cada libro de MS-Word, serían M columnas en Excel.


Alguien me puede dar una ayuda de cómo importar esto desde Excel.

Muchas gracias de antemano.


----------



## Macropod (Sep 4, 2008)

Hola cgcamal,

Aquí está un nuevo ' EncuentreDocumentos' macro para substituir el anterior.


```
Sub EncuentreDocumentos()
Dim strFldr As String
Dim StrDoc As String
Dim DirectoryListArray() As String
Dim x As Integer
x = 0
On Error GoTo Abort
strFldr = ConsigaCarpeta(Title:="Seleccione por favor una carpeta", RootFolder:=&H400) 'o &H11
StrDoc = Dir$(strFldr & "\*.doc")
Do While StrDoc <> ""
  x = x + 1
  ReDim Preserve DirectoryListArray(x)
  DirectoryListArray(x) = strFldr & "\" & StrDoc
  StrDoc = Dir$
Loop
MsgBox x & " documentos fueron encontrados."
If x > 0 Then
  i = 1
  ReDim Datos(6, i)
  Datos(1, i) = "CP"
  Datos(2, i) = "NDT"
  Datos(3, i) = "NDC"
  Datos(4, i) = "NDV"
  Datos(5, i) = "NP"
  Datos(6, i) = "NH"
  For x = 1 To UBound(DirectoryListArray)
    StrDoc = DirectoryListArray(x)
    MsgBox StrDoc
    Documents.Open Filename:=StrDoc
    Call ConsigaDatos
    With Documents.Item(StrDoc)
      .Saved = True
      .Close
    End With
  Next x
  Call EscribaDatos
End If
Abort:
End Sub
```
 ¡Goce!


----------



## cgcamal (Sep 6, 2008)

Macropod, ¿qué tal?

Estuve investigando qué sustituye a Application.FileSearch en Office 2007 y
parece ser FileSystemObject y la cual se debe definir como sigue:

*Set fso = CreateObject("Scripting.FileSystemObject")<?xml:namespace prefix = o ns = "urn:schemas-microsoft-comfficeffice" /><o></o>*
*<o></o>*
Pero probando y probando no pude lograr lo que necesito.

He estado pensando una manera más fácil, y es así:

<o></o>
1- Abrir el primer libro y almacenar el nombre
2- Buscar palabra que limita el inicio *“Información personal”* por ej.
3- Almacenar el número de línea en que se encuentra esta palabra = L1
4- Buscar la última palabra que me interesa dentro del libro 
5- Almacenar el número de línea en que se encuentra esta última palabra = L2
6- Copiar rango entre L1-L2
7- Pegar el nombre del libro actual en el libro Destino.doc
8- Debajo del nombre del libro pegar el rango entre L1-L2
9- Cerrar el libro actual y abrir el siguiente hasta terminar todos los libros en el directorio.

Al unir todos los rangos en un solo libro de MS-Word, sería más fácil pasarlo a MS-Excel y trabajar con él.

Ojalá me pudieras ayudar.

Saludos


----------



## cgcamal (Sep 7, 2008)

Macropod,

Antes que nada, disculpas porque antes de mi ultimo post, no me había dado cuenta que me habías repondido con la macro "EncuentreDocumentos" ya modificada, sorry.

La macro "EncuentreDocumentos" ahora si funcionó con Dir, ya que pide buscar la carpeta, pero la macro "ConsigaDatos"  parece que se queda en loop infinito, lo he probado con F8 paso a paso y nunca sale del ciclo
For Each.

Tal vez si solo se copia el rango que contiene la información, buscando una primera y una ultima palabra para almacenar posiciones de limite de inicio y final del rango. No sé, es una idea, me parece menos complicado que buscar cada campo.

Saludos
Saludos


----------



## Macropod (Sep 7, 2008)

Hola César,

La macro parece trabajar correctamente para mí. Porque la macro tiene que hacer mucho trabajo, documentos de abertura, prueba todas las células en todas las tablas para los valores uces de los que usted quiere, puede tardar un cierto tiempo para procesar cada documento. Si usted tiene muchos documentos en la carpeta, ésta podría significar que la macro tardará un tiempo largo para terminar. Cuando está terminado, usted debe ver una hoja de trabajo de MS_Excel con todos los datos.

Hay dos declaraciones de Msgbox que usted podría suprimir: "MsgBox StrDoc" y "MsgBox "Hello"" que me fui accidentalmente adentro allí después de probar. Eso ayudaría a las macros para funcionar más rápidamente.

Inténtelo en una carpeta que tenga dos o tres documentos y déjeme saber si trabaja muy bien.

Saludos


----------



## cgcamal (Sep 9, 2008)

Macropod,

La he probado y funciona, pero no en todos los casos. por ejemplo, me
encontré con un libro que en el campo NDT tenía escritos en un solo cuadro pero en diferentes renglones(30) varios números asi:

600
607
610
617
.
.
697

pero en la celda NDT en Excel apareció

60.060.761.061.762.700.000.000...........000 y muchos triples ceros más separados por punto.

Para evitar esto sería posible separar hacia abajo este tipo de listas de números para un mismo campo, en lugar de hacerlo por comas dentro de una misma celda? o sea.

CP---NDT--NDC-NDV-NP-NH
504-12345-2345-117--2--4
-----54321-112- -   -  - 
-----35378- - - - - - - -      
-------.
-------.
-------.
-----98363

55-46897-546-114--1--3
----15567-23
------.
------.

Una pregunta más, cómo se podría dejar el nombre del libro que se abre en una columna al final, o sea, agregando un campo en el libro de Excel con el nombre en la misma linea de CP, para saber de qué libro es la información?

Bueno, saludos y muchas gracias de nuevo.


----------



## Greg Truby (Sep 9, 2008)

No tengo mucho tiempo, ya estoy en la oficina.  Pasaré hoy por la noche para ver cómo anda la cosa aquí, pero...

César, agregue un "watch" sobre el término _oCel.Range.Text_ para poder ver qué está pasando mientras corre el bucle de _for each oCel..._ y así tal vez aprende el por qué le está devolviendo un valor diferente a lo esperado. 



cgcamal said:


> Una pregunta más, cómo se podría dejar el nombre del libro que se abre en una columna al final, o sea, agregando un campo en el libro de Excel con el nombre en la misma linea de CP, para saber de qué libro es la información?


 
¿Qué piensa usted? ¿Dónde es que Macropod está llenando las celdas? En la rutina _EscribaDatos_, ¿verdad? ¿Cómo se escribe? Con una matriz.  ¿Entonces?  Habrá que ampliar la matriz y poner el nombre del archivo como último elemento de la matriz.  ¿Entonces? Habrá que pasar el nombre del archivo a la rutina que llena la matriz como parametro o cambiar el alcance (scope) del variable que contiene el nombre del archivo para que sea visible a la rutina que llena la matriz.

Con una copia para hacer experimentos, hága pruebas para ver si puede lograrlo.  (Sí, sé, otra vez yo dando lecturas de cómo pescar en vez de regalando pecesitos. Que profesor más duro, ¿verdad?)

Bueno, ya al trabajo para mi.  

Saludos,


----------



## Macropod (Sep 9, 2008)

Hola Greg,

Pienso entiendo que el problema César está teniendo y eso puedo fijarlo.

En cuanto a agregar el nombre del archivo, eso es fácil de hacer.

Convengo que no sería difícil que César agregue el nombre del archivo a la matriz, pero el otro problema es más difícil de solucionar.

Saludos


----------



## Greg Truby (Sep 9, 2008)

Hola Macropod,
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-comfficeffice" /><o></o>
Actualmente la pregunta que hizo César fue bastante buena. Y usted tiene razón, es un poquito complicado para alguien con experiencia limitada con VBA. Pero mi forma de ayudar es tratar de enseñar más que regalar. Con pedir a César (u otro miembro leyendo) leer el código de usted y pensar en como uno lo haría, se crece un poco sus habilidades. A veces, termino "regalando el pez", pero no hasta que la persona haya hecho un esfuerzo primero. Si no, el estudiante seguirá débil para siempre. Por ejemplo, aquí hice a César sufrir bastante antes de darle las respuestas.  
<o></o>
Y un consejito no tanto para usted sino más para los demás que leen esto en el futuro. En un caso donde tenemos una sopa de aplicaciones, yo cambiaría el protocolo para nombrar variables para que fuera más claro a cual aplicación pertenece cada variable porque los objetos CELL y RANGE existen en ambas aplicaciones (también habrá que poner una referencia a Excel para poder utilizar _early binding._)<o></o>
<o></o>
<o>
	
	
	
	
	
	



```
<o:p>Private Sub ConsigaDatos()
    Dim wd_docSource As Word.Document, _
        wd_tblSource As Word.Table, _
        wd_celSource As Word.Cell, _
        wd_rngSource As Word.Range
...</o:p>
<o:p>Private Sub EscribaDatos()
    Dim xl_appTarget As Excel.Application, _
        xl_wbTarget As Excel.Workbook, _
        xl_wsTarget As Excel.Worksheet</o:p>
```
</o><o></o>


----------



## cgcamal (Sep 12, 2008)

Macropod/Greg,

Hoy mi trabajo al fin me permitió un par de horas libres después de las horas de oficina para poder analizar sus consejos y códigos que tan gentilmente nos ofrecen en aras de nuestra ayuda y aprendizaje. Gracias por hacerme aprender de la mejor manera,la manera dificil, o sea, buscando, investigando, probando, fallando y al final triunfando.


He logrado, al menos de forma rudimentaria, colocar en la misma línea del campo "CP", el nombre del archivo.doc correspondiente con la sentencia "Datos(7, i - 1) = ActiveDocument.Name" al final de la macro "ConsigaDatos".Pero no sé porque el campo "NH" y el que agregué del "Nombre de Archivo", al pasar la información a Excel los estaba colocando una línea más abajo del campo "CP". Bueno, esto lo corregí restando uno al contador para ambos campos por ejemplo "Datos(7, i - 1) = ....".

Del código original de Macropod estoy aprendiendo sobre bastantes cosas nuevas, y sigo tratando de comprender cómo funciona cada línea de grupos de sentencias como la de abajo, especialmente la forma en que usó de la fucnión Replace:

"If InStr(oCel.Range.Text, "(NP)") > 0 Then
      Set oRng = oTbl.Cell(oCel.RowIndex + 1, oCel.ColumnIndex).Range
      oRng.End = oRng.End - 1
      Datos(1, i) = Replace(Replace(Replace(Trim(oRng.Text), vbCr, ","), vbTab, " "), ",,", ",")
    End If"


Pero directamente Macropod, me te solicito me ayudés con las siguientes preguntas:

En la macro Sub EncuentreDocumentos(), en la línea

strFldr = ConsigaCarpeta(Title:="Seleccione por favor una carpeta", RootFolder:=&H400) 'o &H11

1-)¿Qué significa la parte "&H400" de la sentencia RootFolder:=&H400 o o &H11?

2-)¿Qué significa igualar a Dir$ en la sentencia StrDoc = Dir$?


Greg,

Limitado no, limitadísimo conocimiento mio en VBA, jaja, pero con los ejemplos y consejos como los de ustedes se va aprendiendo de a poco a lanzar el anzuelo al menos  y capturar a veces, sólo a veces sardinitas jajaja.


Me gustaría tener más tiempo para la programación ya que me apasiona y me ayuda, pero mientras, seguiré tratando de ver la forma separar hacia abajo los diferentes datos que pueda tener el campo NDT o NDV. Lo bueno es que la macro funciona, sólo restan estos detalles. Además me queda pendiente lo de agregar la inspección (watch), aún me da fuera de contexto.

Les agradezco mucho, seguimos en contacto, saludos


----------



## cgcamal (Sep 12, 2008)

Estaba pensando que para evitar que los datos de NDT que al pasarse a Excel no son separados por comas de buena forma en algunos casos, porque tiende a tomarlo como un número muy grande ya que los une y por consiguiente aparece como 6.25388E-36 por ejemplo, tal vez se corrije enviando los datos a un archivo de excel ya existente y que tenga cierto formato en las celdas destino, por ejemplo, la columna en donde se escribirá NDT en formato de texto.


Pero no sé como direcccionar los datos en la macro "EscribaDatos()" a un libro de excel ya existente, por ejemplo que se llame,


"Datos importados.xls"


Les agradecería un consejo en este sentido.


Saludos cordiales.


----------



## cgcamal (Aug 14, 2008)

Saludos a todos,

Tengo muchos archivos de MS Word que contienen ciertos datos que están bajo un título. La situación es que quisiera extraer esos datos y pegarlos organizadamente en una hoja de Excel. 

Si son N libros de MS-Word, serían N filas en Excel. Y si son M datos que quiero extraer de cada libro de MS-Word, serían M columnas en Excel.


Alguien me puede dar una ayuda de cómo importar esto desde Excel.

Muchas gracias de antemano.


----------



## Macropod (Sep 12, 2008)

Hola César,

Las respuestas a sus preguntas son:
1. =&H400 dice a macro dónde comenzar a mirar. &H11 es otra opción que usted podría utilizar en lugar de otro. Hay otras opciones también. Pruebe estos dos para se.
2. Dir$ dicen la macro conseguir el nombre del archivo.

Saludos


----------



## cgcamal (Sep 12, 2008)

Macropod,

Muchas gracias por tus respuestas.

Sólo dos preguntas más.

Cuando la macro detecta error en un libro de Word, a veces se detiene. 

¿Cómo decirle que siga con el siguiente libre hasta terminar sin detenerse?

Cuando se encuentra con un libro guardado como de "Sólo lectura" se detiene para preguntar "Aceptar", "Cancelar".

¿Cómo decirle que dé "aceptar" automáticamente sin que aparezca la notificación?


Muchas gracias de nuevo.


----------



## Macropod (Sep 12, 2008)

Hola César,

Podría cambiar:
	
	
	
	
	
	



```
Documents.Open FileName:=StrDoc
        Call ConsigaDatos
        With Documents.Item(StrDoc)
          .Saved = True
          .Close
        End With
```
a:
	
	
	
	
	
	



```
On Error GoTo ArchivoSiguiente
      Documents.Open FileName:=StrDoc, ReadOnly:=True
        Call ConsigaDatos
        With Documents.Item(StrDoc)
          .Saved = True
          .Close
        End With
ArchivoSiguiente:
```
Saludos


----------



## cgcamal (Sep 13, 2008)

Gracias de nuevo Macropod, funcionó tu sugerencia, pero aquí de nuevo preguntando.

Parecido al problema de "aceptar" libro de "solo lectura" de manera automática.

¿cómo cerrar automáticamente un mensaje de "Mostrar reparaciones" que aparece en algunos libros? Según menciona es porque Word logró reparar 
fallas en el archivo y da la opcción de "Ir a" y de "Cerrar".

¿cómo direccionar a una libro de Excel ya existente los datos desde word?
por ej: datos.xls 

Saludos


----------



## Macropod (Sep 13, 2008)

Hola César,

No estoy seguro que sería bueno cerrar la caja de mensaje, pero usted puede ser que pueda hacerla si usted agrega:
Application.DisplayAlerts = wdAlertsNone
después:
On Error GoTo ArchivoSiguiente
y si usted agrega:
Application.DisplayAlerts = wdAlertsNone
antes:
ArchivoSiguiente:

Para abrir un libro existente del MS-Excel, cambie:
Set xlLibro = xlApp.WorkBooks.Add
a:
Set xlLibro = xlApp.WorkBooks.Open("Datos.xls")

¿Consiguió mis mensajes personales? Tener dos enviados.

Saludos


----------



## Macropod (Sep 13, 2008)

Corrección -
agrega:
Application.DisplayAlerts = wdAlertsAll
antes:
ArchivoSiguiente:


----------



## cgcamal (Sep 13, 2008)

Gracias de nuevo Macropod,

Voy a agregar estas líneas de código y así seguir depurando la macro.
Veremos que tal.

Ahora si vi los mensajes, no me di cuenta, sorry.

Muchas gracias de nuevo.


----------

