Tengo un servicio de Windows escrito en C# que lee el texto de documentos de Word (doc y docx) usando VBA Interop. Sin embargo, en ciertos documentos parece que se cuelga de la llamada al método Open. Parece que todos los documentos problemáticos tienen macros. La versión instalada localmente de la palabra tiene macros discapacitados y el código que se utiliza para abrir el documento es el siguiente:Abrir un documento de Microsoft Word en un servicio de Windows parece colgar
using Word = Microsoft.Office.Interop.Word;
using OfficeCore = Microsoft.Office.Core;
Word.Application m_wordApp = new Word.ApplicationClass();
Word.Document m_wordDoc = null;
object TRUE_VALUE = true;
object FALSE_VALUE = false;
object MISSING_VALUE = System.Reflection.Missing.Value;
m_wordApp.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone; //will still fail with this line removed
m_wordApp.Visible = false; //will still fail with this line removed
m_wordApp.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable; //will still fail with this line removed
m_wordDoc = m_wordApp.Documents.Open(ref fileNameObject, ref FALSE_VALUE, ref TRUE_VALUE, ref FALSE_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref FALSE_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE, ref MISSING_VALUE);
que puede procesar estos documentos manualmente en mi máquina de desarrollo. ¿Alguien sabe por qué está sucediendo esto o tiene más preguntas sobre mi pregunta?
¿La versión de Word en la máquina de producción solicita macros o las desactiva de forma silenciosa? –
¿Qué sucede cuando coloca el código en una aplicación de consola normal y lo ejecuta en la máquina de producción? ¿Aparecerá algún cuadro de diálogo? – Heinzi
Mke - Word debería desactivar silenciosamente las macros. Encontré la clave de registro que corresponde a la opción "deshabilitar todas las macros sin notificación" en el centro de confianza de Word y establecí que para el usuario el servicio se ejecuta pero esto no ha solucionado el problema –