Macro que procesa Excel extraído de SAP

Dante Amor leo muchas de tus respuestas y me han ayudado mucho a aprender VBA, tengo una duda que me lleva frenando días y seguramente sea una tontería que tú/vosotros sabreis.

He creado una macro (conozco bastante bien el lenguaje VBA) que lleva un Script dentro el cual ejecuta la macro, descarga unos archivos de SAP que guarda en formato .XLS (no me deja guardar otro formato) y que después una vez acaba la macro de extraer datos SAP comienza a a abrir los libros de Excel y procesa los datos que contiene.

Mi problema es el siguiente, cuando estos libros de SAP son son abiertos de manera manual con el doble click del Ratón, todos los datos de sus celdas están en formato de celda "General" y el número que quiero extraer extraer aparece de manera correcta "258,638" como se puede ver en la foto.

Y cuando abro este mismo libro desde la macro, el archivo se descompone a mitad y pasa algunos números a formato texto y el valor anterior pasa a ser "258683" es decir muchísimo mas grande y un valor que no es real. Adjunto imagen abierto desde la macro.

No se que hacer es como si la macro lo abriera en un formato y a darle con el ratón lo abriera en otro, si abro todos los archivos a mano y los guardo como .xlsx se soluciona el problema, pero claro la macro me baja unos 50 archivos y tendría que pararla abrirlos a manos, guardarlos como .xlsx y seguir corriendo la macro, por lo tanto dejaría de ser una herramienta útil.

No se como solucionar este error, me lleva loco.

Mil gracias a todos de verdad sois unos profesionales y aprovecho ahora que ya tengo cuenta par darte muchas gracias Dante Amor porque he leído muchas respuestas útiles tuyas y a partir de ahora te las puntuaré.

2 Respuestas

Respuesta
1

Alvaro, más allá que los archivos de SAP los baje como .xls, la realidad es que terminan siendo archivos de texto (CSV) y lo que creo que te está pasando es que cuando abre el archivo no reconoce bien los valores numéricos. Antes de cambiar la macro te recomiendo que 'juegues' cambiando la configuración numérica (punto por coma o viceversa) y el separador de listas

Salu2

Agrego.

Usa la grabadora de macros para abrir el archivo que baja de SAP y compará si el código que genera es similar al que usas en la macro para abrir los archivos.

Salu2

He cambiado dentro de las Opciones de Excel, Punto por Coma y viceversa y no ha funcionado. Sigue ocurriendo el problema. Si lo mas raro es que si lo abro a mano lo veo bien y si lo abre la macro se ve de otra manera. Supongo que será tema de formatos, pero no doy con la tecla, gracias por contestar

Respuesta
2

Utiliza Local:=True al abrir el archivo:

    Workbooks.Open Filename:="C:\users\" & Environ("UserName") & "\Documents\", _
        Local:=True

También revisa la configuración regional, supongo que debes tener la de España, donde el decimal es coma (,) y el separador de miles es punto (.)

Entra al panel de control, Configuración regional y de idioma. En opciones regionales, Personalizar

En la siguiente ventana en Separador de listas pon punto y coma (;)

Presiona los botones Aplicar, Aceptar, nuevamente Aplicar y Aceptar.


Regresa a probar la macro con el parámetro "Local:=True"

Avísame cualquier detalle.

sal u dos

¡Gracias! Mil gracias, solo con el "Local:=True" ya funciona, no he tenido que tocar configuración del punto y la coma, eres una máquina, a que se debía el error? no terminan de entrar en mi cabeza porque sucedía esto.

Te anexo la sintaxis:

https://msdn.microsoft.com/en-us/library/office/ff194819.aspx 


Local

Optional

Variant

"True saves files against the language of Microsoft Excel (including control panel settings). False (default) saves files against the language of Visual Basic for Applications (VBA) (which is typically United States English unless the VBA project where Workbooks.Open is run from is an old internationalized XL5/95 VBA project)."


Cuando abres un archivo, el parámetro False está por default, entonces abre el archivo con VBA, que es típicamente inglés de los Estados Unidos, eso significa que utilizará la coma (,) como separador de listas, la coma (,) como separador de miles y el punto (.) Como separador de decimales.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas