ms-word - tipos - que es una macro en word
¿Cómo detener la ejecución de macros al abrir un documento de Word utilizando OLE Interop? (1)
Tratar:
WordBasic.DisableAutoMacros 1
Curiosamente, esto se basa en un retroceso a los días previos a la VBA, pero todavía parece ser la forma más confiable de garantizar que no se activen auto macros (en cualquier documento, es posible que desee volver atrás utilizando el parámetro "0") .
Hace poco tuve un proyecto en el que tuve que procesar 6.000 plantillas de Word (sí, plantillas, no documentos) muchas de las cuales tenían cosas raras como macros, etc. Pude procesar todas menos 6 usando esta técnica. (Nunca entendí cuál era el problema con esos 6).
EDITAR: para una discusión sobre cómo llamar esto desde C #, consulte: http://www.dotnet247.com/247reference/msgs/56/281785.aspx
Como sugiere el título, tengo una aplicación .Net que usa interoperabilidad para abrir documentos en Word. Yo he puesto
app.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable
antes de abrir el documento. De acuerdo con la documentación, esto "Deshabilita todas las macros en todos los archivos abiertos mediante programación, sin mostrar ninguna alerta de seguridad"
Sin embargo, cuando intento abrir un documento específico, aparece un cuadro de diálogo en la pantalla que dice "no se pudo cargar un objeto porque no está disponible en esta máquina". Es un documento de cliente pero creo que contiene una macro con referencias a un objeto COM que no tengo instalado.
¿Estoy haciendo algo estúpido? ¿Hay alguna manera de realmente deshabilitar macros al abrir un documento de Word?