GetScriptString

Para ésta y para otras dos funciones relacionadas con las macros me he basado en el código que aparece en en la herramienta V-Tools (2000 y 2002), y
que amablemente publica Skrol29 http://www.skrol29.com en su página web.



Volver
'*********************************************************
'Function GetScriptString(
'         HScr As Long,
'         ScriptColumn As Long,
'         Value As String) As Boolean
'
' Método que devuelve los valores de las diferentes
' columnas de una macro, así como los valores de los 
' los argumentos de la acción. 
' Devuelve True si ha tenido éxito.
'
' Argumentos:
'   HScr: Valor Long que representa a la macro
'   ScriptColumn: Valor Long que representa la columna de
'   la macro de la que se quiere conocer su valor.
'
'   Si ScriptColumn es      la columna será
'   ------------------      ---------------
'   0                       Nombre de macro
'   1                       Comentario
'   2                       Condición
'   3-12                    Argumentos
'
'   Value: Cadena que almacenará el valor existente en la
'   columna seleccionada.
'
' Para el siguiente ejemplo, necesitamos utilizar 3 
' funciones API de Access. La macro que se utilizará es la
' misma que se crea en el ejemplo sobre el método 
' SaveScriptString
'
' API para cerrar una macro en memoria
Private Declare Sub fCloseHscr _
            Lib "msaccess.exe" _
            Alias "#20" _
            (ByVal HScr As Long)
            
' API para ir a la siguiente fila de una macro
Private Declare Function fNextHscr _
            Lib "msaccess.exe" _
            Alias "#22" _
            (ByVal HScr As Long, _
            ByVal fSkipBlank As Long, _
            pfEndOfScript As Long) As Long
            
' API para obtener la acción de la fila actual de una 
' macro
Private Declare Function ActidOfHscr _
            Lib "msaccess.exe" _
            Alias "#29" _
            (ByVal HScr As Long) As Long

Sub wzGetScriptString()
Dim hMacro As Long
Dim wzScript As String
Dim wzLabel As String
Dim wzOpenMode As Long
Dim wzExtra As Long
Dim wzVersion As Long
Dim mAction As Variant
Dim mLabel As String
Dim mComment As String
Dim mCondition As String
Dim mArgument As String
Dim EndOfScript As Long

    ' Nombre de la macro
    wzScript = "Macro de ejemplo"
    ' modo lectura
    wzOpenMode = 0
    
    WizHook.Key = 51488399
    ' Abrir la macro
    hMacro = WizHook.OpenScript(wzScript, _
        wzLabel, wzOpenMode, wzExtra, wzVersion)
    ' Nos posicionamos en la primera línea
    fNextHscr hMacro, 0&, EndOfScript
    ' valor de la acción
    mAction = ActidOfHscr(hMacro)
    ' traducimos el valor por una cadena
    mAction = WizHook.NameFromActid(mAction)
    ' valor de la columna "nombre de macro"
    WizHook.GetScriptString hMacro, 0&, mLabel
    ' valor de la columna "Comentario"
    WizHook.GetScriptString hMacro, 1&, mComment
    ' valor de la columna "Condición"
    WizHook.GetScriptString hMacro, 2&, mCondition
    ' valor del primer argumento de la acción
    WizHook.GetScriptString hMacro, 3&, mArgument
    
    Debug.Print "Nombre de macro:", mLabel
    Debug.Print "Condición:", mCondition
    Debug.Print "Acción:", mAction
    Debug.Print "Comentarios:", mComment
    Debug.Print "1er argumento:", mArgument

End Sub
'*********************************************************
Contactar Última actualización 21/9/2003     © Juan M. Afán deRibera