SaveScriptString

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


Volver
'*********************************************************
' Function SaveScriptString(
'          HScr As Long,
'          ScriptColumn As Long,
'          Value As String) As Boolean
'
' Método para escribir valores en una macro.
' 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 en la que se va a escribir
'
'   Valores de ScriptColumn:
'
'   Si ScriptColumn es      la columna será
'   ------------------      ---------------
'   0                       Nombre de macro
'   1                       Comentario
'   2                       Condición
'   3-12                    Argumentos
'
'   Value: Valor de tipo cadena que se grabará en la
'   columna.
'
' Para el siguiente ejemplo, necesitaremos utilizar 3
' funciones API de Access
'
' Cerrar una macro
 Private Declare Sub fCloseHscr _
            Lib "msaccess.exe" _
            Alias "#20" _
            (ByVal HScr As Long)

' Avanzar a la siguiente línea 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

' Escribir el valor de una acción en una macro
 Private Declare Function fSaveActidHscr _
           Lib "msaccess.exe" _
           Alias "#25" _
           (ByVal HScr As Long, _
           ByVal actid As Long) As Long

Sub wzSaveScriptString()
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 EndOfScript As Long

    ' Nombre de la macro
    wzScript = "Macro de ejemplo"
    ' Modo escritura
    wzOpenMode = 2&

    WizHook.Key = 51488399
    ' abrimos la macro para escritura
    hMacro = WizHook.OpenScript(wzScript, _
        wzLabel, wzOpenMode, wzExtra, wzVersion)
    
    If hMacro <> 0 Then
        ' nos posicionamos en la primera línea
        fNextHscr hMacro, 0&, EndOfScript
        ' grabamos la acción ("MsgBox")
        fSaveActidHscr hMacro, 22&
        ' grabamos en la columna "Nombre de macro"
        WizHook.SaveScriptString _
          hMacro, 0&, "Ejemplo de etiqueta"
        ' grabamos en la columna "Comentarios"
        WizHook.SaveScriptString _
          hMacro, 1&, "Ejemplo de comentario"
        ' grabamos en la columna "Condición"
        WizHook.SaveScriptString _
          hMacro, 2&, "..."
        ' grabamos en el primer argumento
        WizHook.SaveScriptString _
          hMacro, 3&, "Ejemplo de creación de " _
          & "macro y escritura de valores"
    End If
      
    ' para que los cambios tengan efecto, se ha
    ' de cerrar/guardar la macro
    fCloseHscr hMacro

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