visual para office objetos microsoft ejemplos vba word-vba

para - vba word object model



Comportamiento incoherente para la palabra clave Me (0)

Noté que el comportamiento de la palabra clave Me en el código de VBA en los archivos de plantilla es diferente dependiendo de si el documento tiene controles ActiveX o no.

  • Documento con controles ActiveX: Me referencia al nuevo archivo creado a partir de la plantilla.
  • Documento sin controles ActiveX: Me referencia a la plantilla en lugar del nuevo archivo.

Para demostrar este comportamiento extraño hice dos archivos de muestra:

Ambos archivos son idénticos, la única diferencia entre ellos es que uno tiene un botón y el otro no. El código de VBA de ambos archivos es el siguiente:

Private Sub Document_New() Selection.TypeText "Me keyword is referencing """ & Me.Name & """." End Sub

Si crea un nuevo archivo a partir de estas plantillas, se dará cuenta de que los resultados son diferentes:

Con el contenido ActiveX.dotm es

La palabra clave Me hace referencia a "Document1". <- cadena generada por el código anterior

mientras que el contenido de WithoutActiveX.dotm es

La palabra clave Me hace referencia a "WithoutActiveX.dotm". <- cadena generada por el código anterior

Hice varias pruebas para concluir que la fuente de la inconsistencia es la presencia de controles ActiveX (no hay ningún código asociado con el control: simplemente está presente en el documento).

¿Es esto algo por diseño o simplemente un error?

EDITAR 2017-06-13 : El error descrito aquí parece estar parcialmente corregido, pero todavía es reproducible. Ahora sucede solo si hay una instancia de Word abierta ANTES de crear un nuevo documento utilizando una de estas plantillas (como un documento en blanco).