2 errores diferentes en diferentes equipos para el mismo botón

Sucede que tengo un botón el cual exporta datos de una hoja de Excel a otro libro diferente, este botón se ha probado e implementado en diferentes equipos y en 2 funciona con completa normalidad, pero en otros 2 no, en uno de esos equipos al hacer click al botón o ejecutar la macro Excel deja de funcionar directamente sin mandar mensaje de error ni nada, solo deja de funcionar y se cierra; en el otro equipo al hacer click en el botón sale un mensaje diciendo "No se pueden cargar algunos objetos porque no están disponibles en este equipo" y luego de eso "Exporta" los datos, pero lo único que hace es exportar el formato de la hoja. He tratado de buscar al solucion a estos errores pero no he logrado nada, así que agradezco cualquier ayuda que me pueda dar. Adjunto el código del botón

'se apaga el update de la pantalla para que todo se haga en segundo plano
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
'Definicion de variables
Dim myfile, mybook, a, b, c As String
Ruta = ActiveWorkbook.Path
ChDir Ruta
'Abre el explorador de archivos
myfile = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*", , "Seleccione la ubicacion del archivo")
If VarType(myfile) = vbBoolean Then
MsgBox ("Operación cancelada"), vbCritical, "AVISO"
Exit Sub
End If
'Guarda la ubicacion del archivo destino en una variable
mybook = ActiveWorkbook.Name
Workbooks.Open Filename:=myfile, UpdateLinks:=0
FullName = Split(myfile, Application.PathSeparator)
a = FullName(UBound(FullName))
'Limpia toda las celdas (no necesario de momento)
'Set b = Sheets(ActiveSheet.Name)
'b.Cells.Clear
'Copia y pega los datos
Workbooks(mybook).Sheets("Chequeo Plano").UsedRange.Copy 'Destination:=Workbooks(a).Sheets("DATOS RED").Cells(1, 1)
Workbooks(a).Sheets("DATOS RED").Cells(1, 4).PasteSpecial xlPasteValues
Workbooks(a).Sheets("DATOS RED").Cells(1, 4).PasteSpecial xlFormats
Application.CutCopyMode = False
Workbooks(a).Close True
'avisa que la exportacion fue exitosa
MsgBox ("Los datos se exportaron con éxito"), vbInformation, "AVISO"
'se enciende el update nde la pantalla
Application.DisplayAlerts = True
Application.ScreenUpdating = True
'pregunta si desea abrir el archivo al cual se enviaron los datos y en caso tal se abre
response = MsgBox("¿Desea abrir el archivo?", _
vbYesNo)
If response = vbYes Then
Workbooks.Open Filename:=myfile, UpdateLinks:=0
Else
MsgBox "No se abrira el archivo"
End If

2 respuestas

Respuesta
1

Intenta lo siguiente: primero, quita la instrucción On Error Resume Next

Después, en uno de los equipos donde no funciona, ejecuta la macro paso a paso con la tecla F8.

Cuando aparezca el error o se detenga la macro, me dices en cuál línea se detuvo o qué mensaje de error te aparece.

Ejecuta la macro que pusiste.

Hola Dante, no pude responder antes por ciertos inconvenientes, pero el error sale en este bloque

myfile = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*", , "Seleccione la ubicacion del archivo")
If VarType(myfile) = vbBoolean Then
MsgBox ("Operación cancelada"), vbCritical, "AVISO"

En el momento cuando trata de abrir el explorador de archivos, y ya lo probé en el equipo de otra persona y todo funciono correctamente

Estuve probando en el equipo que tiene este error y cuando llega a ese bloque de códigos el excel deja de funcionar sin más, no muestra ningún error (Incluso borre la línea de On Error Resume Next como sugeriste) solo sale el mensaje diciendo que excel dejo de funcionar, haciendo el ejercicio paso a paso me di cuenta que más precisamente el evento ocurre entre estas dos líneas

myfile = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*", , "Seleccione la ubicacion del archivo")
If VarType(myfile) = vbBoolean Then

 Y es raro, porque en otros equipos este botón funciona correctamente y el código es el mismo

Prueba la macro con los siguientes cambios

Sub Abrir_Archivo()
'
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    'On Error Resume Next
    'Definicion de variables
    Dim myfile, mybook, a, b, c As String
    Ruta = ActiveWorkbook.Path
    ChDir Ruta
    'Abre el explorador de archivos
    'myfile = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*", , "Seleccione la ubicacion del archivo")
    'If VarType(myfile) = vbBoolean Then
    'MsgBox ("Operación cancelada"), vbCritical, "AVISO"
    'Exit Sub
    'End If
    '
    'Act por dante amor
    '
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Seleccione archivo de excel"
        .Filters.Clear
        .Filters.Add "Archivos excel", "*.xls*"
        .AllowMultiSelect = False
        .InitialFileName = ThisWorkbook.Path & "\"
        If .Show Then
            myfile = .SelectedItems.Item(1)
        Else
            MsgBox ("Operación cancelada"), vbCritical, "AVISO"
            Exit Sub
        End If
    End With
    'Act por dante amor
    '
    'Guarda la ubicacion del archivo destino en una variable
    mybook = ActiveWorkbook.Name
    Workbooks.Open Filename:=myfile, UpdateLinks:=0
    FullName = Split(myfile, Application.PathSeparator)
    a = FullName(UBound(FullName))
    'Limpia toda las celdas (no necesario de momento)
    'Set b = Sheets(ActiveSheet.Name)
    'b. Cells. Clear
    'Copia y pega los datos
    Workbooks(mybook). Sheets("Chequeo Plano"). UsedRange.Copy 'Destination:=Workbooks(a). Sheets("DATOS RED").Cells(1, 1)
    Workbooks(a). Sheets("DATOS RED").Cells(1, 4). PasteSpecial xlPasteValues
    Workbooks(a). Sheets("DATOS RED").Cells(1, 4). PasteSpecial xlFormats
    Application.CutCopyMode = False
    Workbooks(a).Close True
    'avisa que la exportacion fue exitosa
    MsgBox ("Los datos se exportaron con éxito"), vbInformation, "AVISO"
    'se enciende el update nde la pantalla
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    'pregunta si desea abrir el archivo al cual se enviaron los datos y en caso tal se abre
    response = MsgBox("¿Desea abrir el archivo?", _
    vbYesNo)
    If response = vbYes Then
    Workbooks.Open Filename:=myfile, UpdateLinks:=0
    Else
    MsgBox "No se abrira el archivo"
    End If
End Sub

sal u dos

Muchas Gracias Dante, tu código me funciono a la perfección, me podrías explicar cual era el problema, y cuál es la diferencia entre tu código y el mio, para así tenerlo en cuenta en caso de que se repita en otro PC. De nuevo muchas gracias.

La diferencia es que en tu código tienes este método:

Application. GetOpenFilename

Y lo cambié por este otro

Application. FileDialog(msoFileDialogFilePicker)

Los 2 métodos me funcionan en excel 2007. Entonces puede ser por la versión de office.

Respuesta
1

[Hola

Por lo que comentas no es problema del código sino de algún (o algunos) objetos ActiveX que estás usando (¿quizá un "DtPicker"?) Y que no es compatible y/o está instalado/registrado  en las PC del problema.

No todas las versiones de Excel vienen con los mismos objetos ActiveX y no todas las versiones de Excel son compatibles con dichos objetos. Excel no es un programa que genere instaladores y mucho menos los objetos que usas en una archivo "viajan" realmente en el archivo. A eso agrégale que las versiones de 64 bits de Excel no son compatibles con varios de ellos, y las versiones más recientes de Excel de 32 bits, tampoco.

Puedes intentar registrar/instalar esos objetos ActiveX en las otras PC, pero como ya comenté, igual no necesariamente funcionará en todas esas PC.

No puedo darte respuestas más puntuales pues tendría que ver el archivo para saber que objetos usas.

Abraham Valencia

Hola, lamento no responder antes pero tuve unos inconvenientes, tienes razón en uno de los equipos no está el DTpicker y es uno de los que usé para hacer el formulario que estoy testeando con ellos, lo único que debo hacer es activar ese DTpicker o debo hacer algo más?

[Hola

El control "DtPicker" (y otros) tiene los siguientes dilemas:

- No funciona en versiones de Office de 64 bits (sea 2010, 2013 u otro)

- No (siempre) funciona en Office 2013 de 32 bits instalado en Windows 7 de 64 bits o en Windows 8 de 64 bits o en Windows 10 de 64 bits

- No funciona en Office 2016

- Algunos Windows de 64 bits permiten su instalación/registro pero no su uso en Office.

- Hay más motivos para que no funcione.

A pesar de eso puedes intentar registrarlo/instalarlo en la PC del problema:

http://www.anunciadores.net/aplicaciones/RegistrarMSCOMCTL.htm 

Igual yo recomiendo ya no usar ese control o usarlo solo si vas tener el archivo en tu PC, si vas a compartir el archivo la recomendación, insisto, es no usarlo o usar alternativas compatibles o controles de terceros:

https://www.rondebruin.nl/win/addins/datepicker.htm 

Saludos]

Abraham Valencia

¡Gracias! En cuanto el compañero que presenta el problema vuelva el viernes probare con alguna de las soluciones que me proporcionas mediante los enlaces que me das y te cuento como me fue, pero me parece curioso que digas que el DTPicker no funciona en Office 2016 ya que ese es el que yo tengo y en el que he estado trabajando

Fe de erratas:

- No viene en Office 2016

Si está en tu Office ha sido "heredado" de una versión anterior y/o de otro programa.

Saludos]

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas