Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuando finaliza una macro, los valores almacenados en sus variables no se guardan en el disco automáticamente. Si una macro necesita conservar un valor, debe almacenarlo externamente antes de que finalice su ejecución. Este tema describe cinco ubicaciones en las que pueden almacenarse y recuperarse fácilmente valores de macros.
Variables de documento
Las variables de documento permiten almacenar valores como parte de un documento o una plantilla. Por ejemplo, puede almacenar valores de una macro en el documento o la plantilla donde reside la macro. Puede agregar variables a un documento o una plantilla utilizando el método Add de la colección Variables. En el siguiente ejemplo, se guarda una variable de documento en la misma ubicación (documento o plantilla) que la macro que se está ejecutando utilizando la propiedad ActiveDocument.
Sub AddDocumentVariable()
ActiveDocument.Variables.Add Name:="Age", Value:=12
End Sub
En el siguiente ejemplo, se utiliza la propiedad Value con un objeto Variable para devolver el valor de una variable de documento.
Sub UseDocumentVariable()
Dim intAge As Integer
intAge = ActiveDocument.Variables("Age").Value
End Sub
Comentarios
Use el campo DOCVARIABLE para insertar una variable de documento en un documento.
Propiedades del documento
Al igual que las variables de documento, las propiedades de documento permiten almacenar valores como parte de un documento o una plantilla. Las propiedades de documento pueden verse en el cuadro de diálogo Propiedades.
El modelo de objetos de Word divide las propiedades del documento en dos grupos: integrado y personalizado. Las propiedades de documento personalizadas son las que se muestran en la ficha Personalizado del cuadro de diálogo Propiedades. Las propiedades de documento integradas son las de todas las fichas del cuadro de diálogo Propiedades, excepto la ficha Personalizado.
Para obtener acceso a las propiedades integradas, utilice la propiedad BuiltInDocumentProperties que devuelve la colección DocumentProperties que incluye las propiedades de documento integradas. Utilice la propiedad CustomDocumentProperties de un objeto Document o Template para devolver la colección DocumentProperties que incluye las propiedades de documento personalizadas. En el siguiente ejemplo, se crea una propiedad de documento denominada "YourName" en la misma ubicación (documento o plantilla) que la macro que se está ejecutando.
Sub AddCustomDocumentProperties()
ActiveDocument.CustomDocumentProperties.Add Name:="YourName", _
LinkToContent:=False, Value:="Joe", Type:=msoPropertyTypeString
End Sub
No se pueden agregar propiedades de documento integradas a la colección DocumentProperties que devuelve la propiedad BuiltInDocumentProperties de un objeto Document o Template. No obstante, sí se puede recuperar el contenido de una propiedad de documento integrada o cambiar el valor de una propiedad de documento integrada de lectura y escritura.
Use el campo DOCPROPERTY para insertar propiedades de documento en un documento.
Entradas de autotexto
Los elementos de Autotexto pueden utilizarse para almacenar información en una plantilla. A diferencia de las variables o propiedades de documento, los elementos de Autotexto pueden incluir otros elementos, además de variables de macros, como texto con formato o gráficos. Utilice el método Add con la colección AutoTextEntries para crear un nuevo elemento de Autotexto. En el siguiente ejemplo, se crea un elemento de Autotexto denominado "MyText" con el contenido de la selección. Si la siguiente instrucción es parte de una macro de plantilla, el nuevo elemento de Autotexto se almacena en la plantilla; de lo contrario, se almacena en la plantilla adjunta al documento en el que reside la instrucción.
Sub AddAutoTextEntry()
ActiveDocument.AttachedTemplate.AutoTextEntries.Add Name:="MyText", _
Range:=Selection.Range
End Sub
Utilice la propiedad Value con un objeto AutoTextEntry para recuperar el contenido del objeto de un elemento de Autotexto.
Archivos de configuración
Puede establecer y recuperar información en un archivo de configuración utilizando la propiedad PrivateProfileString del objeto System. La estructura de un archivo de configuración de Windows es la misma que la del archivo de WIN.INI de Windows 3.1. En el siguiente ejemplo, se establece en 1 la clave DocNum de la sección DocTracker del archivo Macro.ini.
Sub MacroSystemFile()
System.PrivateProfileString( _
FileName:="C:\My Documents\Macro.ini", _
Section:="DocTracker", Key:="DocNum") = 1
End Sub
Una vez ejecutada la instrucción anterior, el archivo Macro.ini incluirá el siguiente texto.
[DocTracker]
DocNum=1
La propiedad PrivateProfileString tiene tres argumentos: FileName, Section y Key. El argumento FileName se utiliza para especificar la ruta de acceso del archivo de configuración y el nombre de archivo. El argumento Section especifica el nombre de sección que aparece entre corchetes antes de las claves asociadas (no incluya los corchetes con el nombre de la sección). El argumento Key especifica el nombre de la clave, que va seguido del signo igual (=) y del valor.
Utilice la misma propiedad PrivateProfileString para recuperar un valor del archivo de configuración. En el siguiente ejemplo, se recupera el valor DocNum de la sección DocTracker del archivo Macro.ini.
Sub GetSystemFileInfo()
Dim intDocNum As Integer
intDocNum = System.PrivateProfileString( _
FileName:="C:\My Documents\Macro.ini", _
Section:="DocTracker", Key:="DocNum")
MsgBox "DocNum is " & intDocNum
End Sub
Registro de Windows
Puede establecer y recuperar información en el registro de Windows utilizando la propiedad PrivateProfileString. En el ejemplo siguiente se recupera el directorio del programa word 2007 del Registro de Windows.
Sub GetRegistryInfo()
Dim strSection As String
Dim strPgmDir As String
strSection = "HKEY_CURRENT_USER\Software\Microsoft" _
& "\Office\12.0\Word\Options"
strPgmDir = System.PrivateProfileString(FileName:="", _
Section:=strSection, Key:="PROGRAMDIR")
MsgBox "The directory for Word is - " & strPgmDir
End Sub
La propiedad PrivateProfileString tiene tres argumentos: FileName, Section y Key. Para devolver o establecer un valor de un elemento del registro, especifique una cadena vacía ("") para el argumento FileName. El argumento Section debe indicar la ruta de acceso completa a la subclave del registro. El argumento Key debe ser el nombre de un elemento de la subclave especificada en Section.
También puede establecer información en el Registro de Windows mediante la siguiente sintaxis PrivateProfileString .
Valor de System.PrivateProfileString(FileName, Section, Key) =
En el siguiente ejemplo, se establece el elemento DOC-PATH en "C:\My Documents" en la subclave Options de Office Word 2007 en el registro de Windows.
Sub SetDocumentDirectory()
Dim strDocDirectory As String
strDocDirectory = "HKEY_CURRENT_USER\Software\Microsoft" _
& "\Office\10.0\Word\Options"
System.PrivateProfileString(FileName:="", _
Section:=strDocDirectory, Key:="DOC-PATH") = "C:\My Documents"
End Sub
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.