Error con macros de excel (.xlsm) al cambiar codificación del sistema a UTF-8

Jose Morillas Jerez 0 Puntos de reputación
2024-04-13T02:00:59.71+00:00

Hola.

Me he topado con este problema al trabajar con las macros en un archivo.xlsm:

Al llegar a cierto punto del desarrollo de una macros, necesito generar un archivo .bat que contenga una línea de código cuyo texto esta guardado en una celda del propio archivo.xlsm.

El problema está en que dicho texto hace referencia a diferentes rutas de archivos que contienen tildes y caracteres especiales.

Si abro directamente una ventana de Símbolo del sistema o Powershell y copio y pego manualmente (Ctrl+C, Ctrl+V) el texto de la celda que contiene la línea de código, se ejecuta con normalidad.

Sin embargo, si genero un archivo .bat con exactamente la misma línea de código (con caracteres especiales), al abrirse Símbolo del sistema o Powershell, se transcriben de forma errónea los caracteres especiales y con tildes, y por tanto no funciona correctamente.

Intenté generar manualmente el archivo.bat con todas las codificaciones posibles que me permite usar el Bloc de notas, pero el problema persistía.

La única solución que encontré para que el archivo .bat se ejecutase normalmente fue codificarlo con UTF-8, tras cambiar la codificación de Windows a UTF-8 (Panel de control > Reloj y Región > Región > Pestaña "Administrativo" > Cambiar la configuración regional del sistema... > Marcar la casilla "Versión beta: Use UTF-8 Unicode para la compatibilidad de idioma en todo el mundo")

Ahora, los archivos .bat que creaba sí que se ejecutaban transcribiendo correctamente los caracteres especiales a la ventana de Símbolo del sistema o Powershell, pero el cambio de codificación del sistema me trajo otro problema:

Al abrir Microsoft Excel para acabar el desarrollo de la macros aparece el error "Hemos encontrado un problema con contenido de 'nombre del archivo .xlsm'. ¿Desea que intentemos recuperar el máximo de contenido posible? Si confía en el origen de este libro, haga clic en Sí."

Aunque intente recuperar el contenido, no lo consigue, y elimina todos los módulos, formularios de macros, ademas de limpiar por completo todo el codigo propio del libro y de cada una de las hojas porque no se puede leer"Parte quitada: Parte /x/vbaProject.bin. (Visual Basic para Aplicaciones (VBA))"

La lista de reparaciones contenida en el archivo de registro (C:\Users*Nombre de usuario*\AppData\Local\Temp\error173640_01.xml) es el siguiente:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><logFileName>error173640_01.xml</logFileName><summary>Se han detectado errores en el archivo "Ruta del archivo .xlsm"</summary><removedParts><removedPart>Parte quitada: Parte /xl/vbaProject.bin. (Visual Basic para Aplicaciones (VBA))</removedPart></removedParts></recoveryLog>

Si cierro Microsoft Excel sin guardar y vuelvo a cambiar la codificación de Windows sin UTF-8, las macros vuelven a aparecer y funcionan correctamente. Pero evidentemente, no puedo ejecutar el archivo .bat sin errores en la transcripción de caracteres...

¿Qué puedo hacer para terminar de desarrollar la macro?

Preguntas y respuestas (Q&A) de Microsoft
Preguntas y respuestas (Q&A) de Microsoft
Use esta etiqueta para compartir sugerencias, solicitudes de características y errores con el equipo de Microsoft Q&A. El equipo de Microsoft Q&A evaluará sus comentarios periódicamente y proporcionará actualizaciones a lo largo del proceso.
383 preguntas
0 comentarios No hay comentarios
{count} votos

1 respuesta

Ordenar por: Muy útil
  1. Luis Angel Ñañez Llanos 96 Puntos de reputación
    2024-04-13T03:54:02.3933333+00:00

    Hola José, ¿qué intentas hacer con tu archivo .bat? Quizás se puede hacer directamente desde VBA, me ha pasado y lo que se intentaba hacer con el archivo .bat, lo hice directamente desde VBA


Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.