Dudas sobre la utilización de Workbook_Open() para borrar registros de los libros de excel

Quiero que al abrir un libro, busque en el mismo directorio por todos los libros existentes y aquel que en la celda a1 de la hoja1 tenga un valor de 1 lo borre.
Sé que lo tengo que poner en Workbook_Open(), pero no sé como mirar el valor de la celda a1 en esos libros sin tener que abrirlos y sin saber como se llaman.
Ayuda...

1 respuesta

Respuesta
1
Efectivamente, debes de usar el evento Open del libro, este código hace lo siguiente
Busca en el mismo directorio donde este el código, o sea, el libro donde se ejecuta este código, todos los archivos de Excel XLS
Comprueba que no sea el mismo
Abre el archivo y obtiene el valor de la hoja 1, OJO, la hoja no importa como se llama, siempre que se la primera, la que esta más a la izquierda
Cierra el libro
Si el valor es 1 lo borra
Lo mismo para todos los archivos encontrados
Dime como seria el código...
Tengo poca experiencia en esto de vba.
Muchísimas gracias.
Un detallito, jaja...
Option Explicit
Private Sub Workbook_Open()
Dim fs As FileSearch
Dim strRuta As String
Dim wb As Workbook
Dim co1 As Integer
Dim Valor As Integer
strRuta = ThisWorkbook.Path
Set fs = Application.FileSearch
With fs
.LookIn = strRuta
.FileType = msoFileTypeExcelWorkbooks
.SearchSubFolders = False
If .Execute(msoSortByFileName) > 0 Then
For co1 = 1 To .FoundFiles.Count
If .FoundFiles(co1) <> ThisWorkbook.FullName Then
Set wb = Workbooks.Open(.FoundFiles(co1))
Valor = wb.Worksheets(1).Range("A1").Value
wb.Close False
If Valor = 1 Then
Kill .FoundFiles(co1)
End If
Set wb = Nothing
End If
Next co1
End If
End With
Set fs = Nothing
End Sub
Hay alguna forma de hacerlo sin necesidad de abrir el libro para mirar el valor de la celda a1. Es que tengo bastantes libros y con bastante código, lo que hace que tarde mucho en abrir cada uno de ellos.
¿Se podría hacer sin llegar a abrir el libro?
Muchas gracias...
Eso es imposible, no puedes "leer" algo de "cualquier" archivo, sin abrirlo, no me imagino cuantos archivos tengas, pero en mi maquina fue muy rapido...
Si es posible, he encontrado (buscando por ahí...) como hacerlo.
De hecho cuando creas un vínculo a una celda con datos de otro libro, no es necesario abrir el otro libro para actualizar los datos(lo hace internamente sin tener que abrir el libro, lee directamente el valor de la celda vinculada)
Cuando lo haya mirado bien, te lo mando para que lo veas...
Gracias de todos modos.
¿Tengo qué finalizar la pregunta? Es que es la primera vez que pregunto aquí y no se como lo tengo que hacer...
No, no es posible, tu dices que no hay que abrirlo, yo dijo que si, cuando vinculas, Excel sólito abre el libro, lee y lo cierra, que no lo notes es diferente, esto se puede hacer, que no se note, pero es OBLIGATORIO abrir "cualquier" archivo para leer su contenido...
La pregunta la finalizas cuando creas que se ha respondido satisfactoriamente a tu pregunta, y te recomiendo no desantender las preguntas que hagas, pues después de algunos días sin respuesta, yo mismo las finalizo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas