Sr. Experto, tengo un problema con unejemplo de macro, este se ejecuta en excel2000-2003 sin ningún problema pero cuando hago correr en excel2007 meda el mensaje de error 445 el objeto no es admintido. Como se puede dar solución a este ejemplo, que para es de gran utilidad Espero su respuesta pronta.
Lo que hace esta macro es sacar de varios libros una columna y los consolida en otro libro. Hay una carpeta input donde están todos los libros por ejm 3 libros y en cada una de ellas existe enla colomna a letrasy en la b números y dela columna b saca esa columna denumeros y lo lleva a otro libro donde esta la hoja preparación y resultados en la de presparación esta elbotonpara capturar esas columnas de los libros y los despliega en lahoja resultados. Espero me haya entendido: Cualquier duda puedomandarle a su correo el ejemplo. Ayúdeme por favor este ejemploes de suma importancia, espero pueda correr en office 2000-2003 y 2007 Esta es la que se encuentra en el modulo: Function buscarArchivos(lPath As String, lFiltro As String, ByRef matResultado, ByRef cantSuc As Long) As Long Dim it As Long Dim tamPath As Integer On Error GoTo salida tamPath = Len(lPath) + 13 With Application.FileSearch .NewSearch .LookIn = lPath .SearchSubFolders = False .Filename = lFiltro .MatchTextExactly = False .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then cantSuc = .FoundFiles.Count For it = 1 To cantSuc matResultado(it) = _ Mid(.FoundFiles(it), tamPath, Len(.FoundFiles(it)) - tamPath - 4) Next it Else MsgBox "No se encontraron archivos de reposición.", _ vbCritical + vbOKOnly, "Error" End If End With Err.Clear salida: If Err.Number <> 0 Then MsgBox "Error Nº " & Err.Number & " " & Err.Description, _ vbInformation + vbOKOnly, "Error" End If buscarSucursales = Err.Number End Function Y ESTA ESLA QUE SE ENCUENTRA EN EL FORMULARIO Private Sub UserForm_Initialize() Dim lPath As String, lFiltro As String Dim it Dim tamPath As Integer Dim Ciclo As Long bCancelado = True On Error GoTo salida lPath = ActiveWorkbook.Path & Application.PathSeparator & "Input" & Application.PathSeparator Rem lFiltro = InputBox("Ingrese el filtro a aplicar para las encuestas a buscar", _ "Ingreso de datos", "*") Rem If lFiltro = "" Then GoTo salida tamPath = Len(lPath) + 1 lFiltro = "*" With Application.FileSearch .NewSearch .LookIn = lPath .SearchSubFolders = False .Filename = lFiltro .MatchTextExactly = False .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then For it = 1 To .FoundFiles.Count lbBusqueda.AddItem _ Mid(.FoundFiles(it), tamPath, Len(.FoundFiles(it)) - tamPath - 3) Next it Else MsgBox "No se encontraron archivos con ese filtro.", _ vbCritical + vbOKOnly, "Error" End If End With bCancelado = False Err.Clear salida: If Err.Number <> 0 Then MsgBox "Error Nº " & Err.Number & " " & Err.Description, _ vbInformation + vbOKOnly, "Error" End If End Sub
¿En qué parte marca el error?
Solo me da el mensaje error no 445 el objeto no se admite y esto ocurre cuando apretó elboton, esto esta en el modulo que le mande
Eso es debido al tipo de archivos que manejan las diferentes versiones. Puedes presionar F1 en la parte que te da el error para que obtengas los pasos a seguir. Otra posible solución sería darle el nombre del archivo a buscar.