Macro para listar archivos y sacar valor de una celda en la primera hoja del libro.
publicado
Buenas, desde hace tiempo eh estado siguiendo los macros que hacen, y se que muchas personas tenemos el mismo problema alguna vez.. pero hoy me tope con esto:
en una carpeta tengo 400 archivos de excel, de los cuales hago una lista en excel de los archivos y en el momento quiero obtener un dato en la celda C5, pero el problema es que al momento de usar una macro para sacar el dato de esa celda tengo que hacer referencia ala hoja a usar, y mi problema es que los libros tienen diferentes nombres de hojas, si existiera algo para hacer que me tome la primera hoja del libro que ocupo sacar ese dato de la celda C5 mi problema estaría resuelto.. les dejo los macros que uso y gracias..
Sub ReadDataFromAllWorkbooksInFolder() Dim FolderName As String, wbName As String, r As Long, cValue As Variant, RevValue As Variant, AutValue As Variant Dim wbList() As String, wbCount As Integer, i As Integer FolderName = "H:\" ' create list of workbooks in foldername wbCount = 0 wbName = Dir(FolderName & "" & "*.xls") While wbName <> "" wbCount = wbCount + 1 ReDim Preserve wbList(1 To wbCount) wbList(wbCount) = wbName wbName = Dir Wend If wbCount = 0 Then Exit Sub ' get values from each workbook r = 0 Workbooks.Add For i = 1 To wbCount r = r + 1 cValue = GetInfoFromClosedFile(FolderName, wbList(i), "Rev 0", "C5") RevValue = GetInfoFromClosedFile(FolderName, wbList(i), "Rev 0", "L3") AutValue = GetInfoFromClosedFile(FolderName, wbList(i), "Rev 0", "J3") Cells(r, 1).Formula = wbList(i) Cells(r, 2).Formula = cValue Cells(r, 3).Formula = RevValue Cells(r, 4).Formula = AutValue Next i End Sub
Private Function GetInfoFromClosedFile(ByVal wbPath As String, _ wbName As String, wsName As String, cellRef As String) As Variant Dim arg As String GetInfoFromClosedFile = "" If Right(wbPath, 1) <> "" Then wbPath = wbPath & "" If Dir(wbPath & "" & wbName) = "" Then Exit Function arg = "'" & wbPath & "[" & wbName & "]" & _ wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1) On Error Resume Next GetInfoFromClosedFile = ExecuteExcel4Macro(arg) End Function[/code]
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Buenas, desde hace tiempo eh estado siguiendo los macros que hacen, y se que muchas personas tenemos el mismo problema alguna vez.. pero hoy me tope con esto:
en una carpeta tengo 400 archivos de excel, de los cuales hago una lista en excel de los archivos y en el momento quiero obtener un dato en la celda C5, pero el problema es que al momento de usar una macro para sacar el dato de esa celda tengo que hacer referencia ala hoja a usar, y mi problema es que los libros tienen diferentes nombres de hojas, si existiera algo para hacer que me tome la primera hoja del libro que ocupo sacar ese dato de la celda C5 mi problema estaría resuelto.. les dejo los macros que uso y gracias..