2010-03-02 20 views
7

Necesito usar el espacio de nombres Microsoft.Office.Interop.Word para extraer si un documento de Word contiene macros, y cuáles. La documentación de MSDN para este espacio de nombres no proporciona mucha información en comparación con la documentación de otras clases .Net. Dónde puedo obtener más información sobre estos espacios de nombres (ejemplos, documentación completa, etc.). Ya busqué en Google y SO, pero no mucha información.Microsoft.Office.Interop.Word documentation

+0

¿Qué versión de Office? –

+0

@ rold2007: solo quería verificar para ver si la respuesta a continuación responde su pregunta. –

+0

@Otaku: Las tres respuestas hasta ahora son interesantes, pero el desarrollo de esta aplicación aún no se ha iniciado, así que no puedo decir si lo que necesito desarrollar es factible o no. Publicaré aquí cuando se realizarán mis pruebas. – rold2007

Respuesta

0

Microsoft.Vbe.Interop es el espacio de nombres para VBA. (VBE es Visual Basic para Application Extensibility 5.3.) Las palabras clave para ayudarlo a buscar son VBProject, VBComponent y CodeModule.

MSDN Search for VBProject lo pondrá en marcha. http://social.msdn.microsoft.com/Search/en-US?query=VBProject&ac=8.

El siguiente artículo es para VBA, pero se convierte fácilmente. WD2000: Macro de muestra para devolver macros y nombres de procedimientos al http://support.microsoft.com/kb/262961.

+0

Esperar una excepción "El acceso programático al proyecto de Visual Basic no es de confianza". cuando pruebes esto Google el mensaje de error para más información. (¡También encontrará personas que intentan hacer lo mismo que usted!) – MZB

+0

Puede cambiar esto a través de la seguridad de macros en la pestaña "Editores de confianza". Además, al agregar un certificado al proyecto con la configuración de seguridad de macros adecuada, omitirá este mensaje. – AMissico

-1

La mayor parte de la documentación se encuentra en el archivo de ayuda de VBA que se envía con Microsoft Word; para Microsoft Word 2003, busque un archivo VBAWD10.CHM. Consulte también la referencia de Microsoft Office Visual Basic (VBAOF11.CHM)

10 y 11 en los números de versión de Word y Office anteriores, por lo que su millaje variará según la versión de Word que haya instalado. Además, el nombre no es coherente en todas las versiones de Word, por lo que una búsqueda de todo lo que VBA * .CHM probablemente genere la mayor parte de la documentación que necesita.

Estos responderán a la mayor parte de sus preguntas acerca de la API Palabra.

No se puede ver una forma obvia de encontrar la lista de macros en un documento o plantilla abiertos, sin embargo ... Agregue un comentario a esta respuesta si encuentra un método, como me gustaría saber .

(Tenga en cuenta que cada llamada puede emitir una excepción al usar la interoperabilidad de Word. Si Word tiene cualquier cuadro de diálogo modal abierto, obtendrá una excepción, por ejemplo, programe en consecuencia).

+0

@unknown - Si va a votar negativamente algo, una pista de por qué la respuesta no fue útil sería útil. (Después de haber hecho algo muy similar a @ rold2007 y buscar la misma documentación, me gustaría saber si hay una mejor fuente de información). – MZB

+0

Como sugiere @AMissico, la propiedad Application.VBE puede ser el lugar para buscar. – MZB

+0

Solo una suposición, ya que solo hay una respuesta a esta pregunta. Imagino que el voto negativo se debe a que hace referencia a las referencias del modelo de objetos de Office y Word y no a las referencias de VBA/VBE. Además, tal vez porque está haciendo referencia a VBA en lugar de un espacio de nombres .NET. – AMissico

3

La respuesta correcta es marcar la propiedad Document.HasVBProject.

Para citar de la sección Comentarios: "Esta propiedad es más útil para determinar mediante programación si un documento debe guardarse en un formato de archivo habilitado para macros. Si se guarda en otro formato, las macros y los proyectos de código incluidos en el documento estar perdido."