Tras la actualización de Microsoft 365 a la versión 2409 (Build 16.0.18025.20160), muchas empresas han descubierto que los archivos PDF generados mediante macros de Excel presentan todo el texto con tachado; la hoja de cálculo en pantalla y las impresiones manuales, en cambio, siguen viéndose perfectas. A continuación encontrarás una guía completa para entender la causa, eliminar el efecto “texto tachado” y blindar tus procesos de reporting automático en el futuro.
Resumen del problema
Hasta septiembre 2025 los scripts de VBA que llamaban a .PrintOut
o .ExportAsFixedFormat
funcionaban sin alteraciones estéticas. Al instalar la build 16.0.18025.20160 del canal Empresarial mensual, Excel habilita por defecto la función Format Stale Values. Si el libro se abre en cálculo manual y no se vuelve a calcular antes de exportar, Excel interpreta los resultados de las fórmulas como “obsoletos” y los marca con tachado, pero solo en la conversión a PDF.
Comprendiendo “Format Stale Values”
La intención de Microsoft es que el usuario identifique valores no actualizados al abrir hojas en modo de cálculo manual:
- Cuando Excel detecta que una celda depende de datos externos o fórmulas sin recalcular, aplica automáticamente un formato de tachado al resultado numérico.
- En vista previa y en la propia hoja no verás ese tachado, salvo que el modo Vista previa de fórmula esté activado.
- Sin embargo, el motor interno de impresión sí considera el indicador “stale”, por lo que la marca aparece en PDFs y colas de impresión enviadas por macro.
Cómo verificar si la característica está activa
- Abre Archivo › Opciones › Avanzadas › Mostrar.
- Busca la casilla Format Stale Values. Si está marcada, la función está activa para ese perfil.
- También puedes ejecutar en Inmediato de VBA
?Application.CalculationState
para comprobar si la aplicación está “xlDone” (todo cálculado) o “xlPending”.
Soluciones rápidas y eficaces
Recalcular antes de imprimir o exportar
La forma más directa es forzar un cálculo completo justo antes de la impresión o exportación:
Sub ExportarInformePDF()
Dim rutaDestino As String
rutaDestino = ThisWorkbook.Path & "\Informe_" & Format(Now, "yyyymmdd-hhmm") & ".pdf"```
Application.CalculateFull 'o ThisWorkbook.Calculate
Worksheets("Reporte").ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=rutaDestino, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
```
End Sub</code></pre>
<p><strong>Ventajas:</strong> mantiene tu proceso actual; no cambia configuraciones globales.<br>
<strong>Inconvenientes:</strong> el archivo puede tardar más segundos en generarse si el libro es muy grande.</p>
<h3>Desactivar “Format Stale Values”</h3>
<p>Si no quieres recalcular, o tu procedimiento ya recalcula en otros puntos y aun así aparece tachado, desactiva la función:</p>
<ul>
<li><strong>Interfaz:</strong> Archivo › Opciones › Avanzadas › Mostrar › desmarca <em>Format Stale Values</em>.</li>
<li><strong>Registro:</strong> crea/ajusta <code>HKEYCURRENTUSER\Software\Microsoft\Office\16.0\Excel\Options</code> valor <code>StaleValuesFormatting</code> = 0.</li>
<li><strong>Directivas de grupo (ADMX):</strong> Office 2021 › Excel › Excel Options › Advanced › Display › <em>Format Stale Values</em> = “Disabled”.</li>
</ul>
<h3>Cambiar de compilación o canal</h3>
<p>Algunos administradores han revertido temporalmente al parche <strong>16.0.17328.20550</strong>, donde la incidencia no existe. Para ello:</p>
<ol>
<li>Ejecuta <code>officec2rclient.exe /update user updatetoversion=16.0.17328.20550</code>.</li>
<li>Desconecta la actualización automática hasta que Microsoft publique un parche estable.</li>
</ol>
<p><em>Advertencia:</em> al retroceder de versión puedes perder funcionalidades o correcciones de seguridad posteriores.</p>
<h2>Implementación paso a paso: macro protegida</h2>
<p>El ejemplo siguiente combina la verificación del estado de cálculo, la desactivación condicional de <em>Format Stale Values</em> y la exportación. Así tu equipo puede ejecutar la misma plantilla en entornos heterogéneos sin sobresaltos.</p>
<pre><code class="language-vba">Sub ImprimirSeguro()
Const rutaClave As String = _
"HKEYCURRENTUSER\Software\Microsoft\Office\16.0\Excel\Options\StaleValuesFormatting"
Dim estadoOriginal As Long
Dim rutaPDF As String```
'1. Guarda la configuración actual
On Error Resume Next
estadoOriginal = CLng(GetSetting("Excel", "Options", "StaleValuesFormatting", 1))
On Error GoTo 0
'2. Desactiva Format Stale Values si está habilitado
If estadoOriginal <> 0 Then SaveSetting "Excel", "Options", "StaleValuesFormatting", "0"
'3. Calcula todo el libro para asegurarse
Application.CalculateFullRebuild
'4. Exporta
rutaPDF = ThisWorkbook.Path & "\Output\" & _
Format(Date, "yyyymmdd") & "_Final.pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, rutaPDF
'5. Restaura la configuración
If estadoOriginal <> 0 Then SaveSetting "Excel", "Options", "StaleValuesFormatting", CStr(estadoOriginal)
```
End Sub
Comparativa de resultados antes y después
Escenario | PDF Generado | Resultado |
---|---|---|
Cálculo manual + sin recalcular + Format Stale Values activado | Texto tachado en celdas con fórmulas | Defectuoso |
Cálculo manual + Application.CalculateFull | Texto limpio | Correcto |
Cálculo manual + desactivar Format Stale Values | Texto limpio | Correcto |
Reversión a build 17328 | Texto limpio | Correcto (solución temporal) |
Estrategias de mantenimiento a largo plazo
- Estandariza la política de cálculo: obliga a abrir tus plantillas en modo cálculo automático, salvo que existan requisitos de rendimiento específicos.
- Incluye pruebas unitarias en tu repositorio VBA: cada sub de reporting debería validar que
Application.CalculationState = xlDone
antes de exportar. - Documenta la configuración “Format Stale Values” en el manual de despliegue de tu plantilla.
- Automatiza el control de versiones: con Office Deployment Tool puedes congelar un canal determinado y recibir solo actualizaciones validadas.
Preguntas frecuentes
¿Puedo desactivar la característica solo durante la exportación?
Sí. Guarda el valor del registro, ponlo a 0 dentro del procedimiento y devuélvelo al finalizar (como en el ejemplo anterior).
¿Existe un hotfix oficial?
Microsoft ha reconocido el bug y planea parchearlo en el canal Beta primero. Consulta los release notes mensuales y planifica tu despliegue.
¿Por qué la vista previa de impresión no muestra el tachado?
La vista previa usa el motor de renderizado del UI, que ignora metadatos “stale”. La exportación PDF se basa en el motor de cálculo, que sí aplica el formato.
¿Afecta a fórmulas de matriz dinámica o solo a fórmulas clásicas?
A ambas. Cualquier celda cuyo .Formula
dependa de un valor no recalculado se marcará internamente.
¿El problema ocurre al imprimir en papel?
Si envías la impresión desde el diálogo estándar, Excel recalcula primero y no hay tachado. Si la impresión se lanza desde una macro sin recalcular, el tachado puede aparecer incluso en la impresora física, dependiendo del controlador.
Conclusión
El efecto “texto tachado” en PDFs generados desde Excel VBA no es un fallo de tus macros, sino una consecuencia imprevista de la nueva función Format Stale Values. Con tres soluciones —recalcular, desactivar la característica o revertir la compilación— puedes restaurar la apariencia profesional de tus informes. Añade las salvaguardas descritas en tus procedimientos y mantén un ciclo de pruebas continuo cada vez que Office se actualice. Así tu pipeline de reporting seguirá siendo confiable y sin sorpresas estéticas.