Firmar digitalmente un proyecto de macro de VBA

Se aplica a
Excel para Microsoft 365 Word para Microsoft 365 Outlook para Microsoft 365 PowerPoint para Microsoft 365 Publisher para Microsoft 365 Excel 2024 Outlook 2024 PowerPoint 2024 Excel 2021 Word 2021 Outlook 2021 PowerPoint 2021 Publisher 2021 Visio Profesional 2021 Visio Standard 2021 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 Publisher 2019 Visio Profesional 2019 Visio Standard 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 Publisher 2016 Visio Profesional 2016 Visio Standard 2016 Visio Profesional 2013

En este artículo se describe cómo firmar digitalmente un proyecto de macro en Windows mediante un certificado. Si aún no tienes un certificado digital, tendrás que obtener uno.

Recomendación

Para usar o probar proyectos de macros en su propio equipo, puede crear su propio certificado de autofirma mediante la herramienta Selfcert.exe. Encontrará más detalles sobre eso a continuación.

Obtener un certificado digital

Puede obtener un certificado digital de una entidad de certificación (CA) comercial, de su administrador de seguridad interno o de un profesional de tecnologías de la información (TI).

Para obtener más información sobre las entidades de certificación que ofrecen servicios para los productos de Microsoft, consulta la lista de miembros del programa de certificados raíz de Microsoft.

Usar un certificado autofirmado

Dado que el certificado digital que crea no está emitido por una entidad de certificación formal de confianza, los proyectos de macro firmados con dichos certificados se conocen como proyectos con firma propia. Microsoft Office confía en un certificado autofirmado solo en un equipo que tiene el certificado de autofirma agregado a la carpeta Certificación raíz de confianza del almacén Certificados: usuario actual. Eso lo hace bueno para probar o usar en su propia máquina o en un número muy pequeño de máquinas que administra, pero no es muy bueno para distribuir proyectos de macros a otras personas.

Crear un certificado de firma propia

¿Qué versión de Windows usa?

Windows 10 o posterior

  1. Vaya a C:\Program Files (x86)\Microsoft Office\root\Office16.

    Recomendación

    Si no lo encuentra en esta carpeta, pruebe C:\Program Files\Microsoft Office\root\Office16

  2. Haga clic en SelfCert.exe. Aparece el cuadro Crear certificado digital.

  3. En el cuadro Nombre del certificado, escriba un nombre descriptivo para el certificado.

  4. Haga clic en Aceptar.

  5. Cuando se observe el mensaje SelfCert se ha creado correctamente, haga clic en Aceptar.

Windows 8

  1. Vaya a C:\Program Files\Microsoft Office\<Office version>\.
  2. Haga clic en SelfCert.exe. Aparece el cuadro Crear certificado digital.
  3. En el cuadro Nombre del certificado, escriba un nombre descriptivo para el certificado.
  4. Haga clic en Aceptar.
  5. Cuando se observe el mensaje SelfCert se ha creado correctamente, haga clic en Aceptar.

Ver el certificado en el almacén de certificados personales

  1. Abre Microsoft Edge.
  2. Escribe edge://settings/privacy en la barra de direcciones.
  3. Desplácese hacia abajo hasta la sección Seguridad y seleccione Administrar certificados.

Firmar digitalmente un proyecto de macro VBA en Excel, PowerPoint, Publisher, Visio, Outlook o Word

  1. Abra el archivo que contiene el proyecto de macro que desee firmar.

  2. En la pestaña Programador, en el grupo Código, haga clic en Visual Basic.

    Nota

    Si la pestaña Programador no está disponible: Haga clic en la pestaña Archivo . Haga clic en Opciones. Haga clic en Personalizar cinta de opciones. En la lista Personalizar la Cinta, seleccione Programador y después haga clic en Aceptar.

  3. En Visual Basic, en el menú Herramientas haga clic en Firma digital.

  4. Se observa el cuadro de diálogo Firma digital.

  5. Seleccione un certificado y haga clic en Aceptar.

    Nota

    Si no ha seleccionado un certificado digital o quiere usar otro, haga clic en Elegir. Seleccione un certificado y haga clic en Aceptar.

Agregar una marca de tiempo a la firma

Cuando otros usuarios ejecuten la macro de VBA, Office comprobará la firma y el certificado con el que se firmó. Agregar una marca de tiempo a la firma significa que la macro se seguirá tratando como firmada, incluso después de que el certificado haya expirado, siempre y cuando el certificado no esté revocado. Esto puede reducir la interrupción de los usuarios.

Un certificado que simplemente ha expirado todavía se puede usar para validar el código, pero no se puede usar para firmar el nuevo código.

Para agregar una marca de tiempo, debe agregar tres claves al registro.

Precaución

Si el registro se edita de forma incorrecta podrían producirse daños graves en el sistema. Antes de realizar cambios en el registro, se recomienda hacer una copia de seguridad de los datos de valor del equipo.

Tecla Tipo Descripción
HKCU\Software\Microsoft\VBA\Security\TimeStampURL REG_SZ La dirección URL del servidor de marca de tiempo preferido. (Obligatorio)
HKCU\Software\Microsoft\VBA\Security\TimeStampRetryCount REG_DWORD El número de veces que el Editor de Visual Basic intentará conectarse al servidor de marca de tiempo antes de producirse un error. (Opcional : si no establece esta opción, el Editor de Visual Basic solo intentará ponerse en contacto con el servidor una vez)
HKCU\Software\Microsoft\VBA\Security\TimeStampRetryDelay REG_DWORD El número de segundos (en milisegundos) que el Editor de Visual Basic esperará entre el reintento de conectarse al servidor de marca de tiempo. (Opcional : si no configura esto, no habrá ningún retraso entre ningún reintento)

Una vez que haya agregado una entrada TimeStampURL que funcione, el Editor de Visual Basic agregará automáticamente una marca de tiempo cada vez que firme digitalmente una macro.

Notas adicionales

  • Se recomienda firmar macros solo después de que la solución se haya probado y esté lista para su distribución: cuando el código de un proyecto de macro firmado se cambia de alguna manera, se quita su firma digital. Sin embargo, si tiene el certificado digital válido que anteriormente se usó para firmar el proyecto en su equipo, el proyecto de macro se firmará automáticamente al guardarlo.
  • Una forma de evitar que los usuarios cambien accidentalmente el proyecto de macros e invaliden la firma es bloquear el proyecto de macros antes de aplicar la firma. La firma digital garantiza que el proyecto no se ha manipulado desde que lo firmó, pero no prueba que usted haya escrito el proyecto. Incluso si ha bloqueado el proyecto de macros, es posible que otro usuario pueda reemplazar su firma por otra firma. Los administradores corporativos también pueden volver a firmar plantillas y complementos para asegurarse de que solo se ejecute el contenido aprobado en los equipos de la empresa.
  • Si crea un complemento que agrega código a un proyecto de macro, el código debe determinar si el proyecto se ha firmado digitalmente e informar al usuario de las consecuencias de modificar un proyecto firmado antes de continuar.
  • Los usuarios que usan certificados comerciales pueden encontrar bloqueos debido a la limitación de los algoritmos hash admitidos en la firma. Puede agregar un valor de clave-valor del Registro DWORDV1HashEnhanced para elegir otro algoritmo hash, en HKCU\SOFTWARE\Microsoft\VBA\Security con reglas de algoritmo de valor (1 a SHA1, 2 a SHA256, 3 a SHA384, 4 a SHA512 y otras a MD5). Esta configuración está disponible en las últimas versiones del canal CC.

Más información

Habilitar o deshabilitar macros en archivos de Microsoft 365

Nota

Este artículo fue creado por una persona con la asistencia de una inteligencia artificial (IA).