Ayuda sobre el producto>Studio v11 (LMS) Ayuda online

Utilizar macros para ejecutar un script

Puede usar macros para ejecutar scripts de Query y scritps de Transaction.

Para ejecutar un script con una macro, cree la macro en Visual Basic for Applications (VBA).

  1. Abra el archivo de datos que esté asociado al script que desee ejecutar.

    Importante: Asegúrese de usar una archivo habilitado para macros o archivo .xlsm.

  2. Pulse Alt+F11.
  3. En el editor de VBA, en Objetos de Microsoft Excel, haga doble clic en la hoja que contenga los datos que desee ejecutar.
  4. Copie y pegue el código de abajo en la ventana.
  5. Reemplace la ruta del archivo de datos, la del archivo de script, el nombre de la hoja y el nombre de inicio de sesión automático de abajo con la información de sus archivos y su nombre de inicio de sesión automático.
  6. Haga clic en Guardar y, a continuación, cierre el editor de VBA.
  7. En Excel, haga clic en la pestaña Vista y, a continuación, en Macros.
  8. Haga clic en la macro que desee ejecutar y, a continuación, en Ejecutar.

Nota: Asegúrese de que el complemento de Excel no esté activo (de que no haya iniciado sesión en).

Macros

Macros de Query

Ejecutar un script publicado

  1. Defina los objetos del complemento.

    Dim StudioMacrosAddin, StudioMacros

  2. Consiga el objeto del complemento de Excel.

    Set StudioMacrosAddin = Application.COMAddIns.Item ("WinshuttleStudioMacros.AddinModule")

  3. Consiga el objeto COM del objeto del complemento.

    Set StudioMacros = StudioMacrosAddin.Object.Macros

  4. Seleccione el archivo publicado que desee ejecutar y defina otras propiedades de ejecución (consulte Propiedades para un objeto de complemento de Query).

    Dim StudioMacros.PublishedFile = "Table_20150113_150602"

  5. Abra el archivo de script publicado.

    StudioMacros.OpenPublishedScript

  6. Ejecute AddinObject para ejecutar el script de Query.

    StudioMacros.RunScript

Ejecutar un script de Query existente

  1. Defina los objetos del complemento.

    Dim StudioMacrosAddin, StudioMacros

  2. Consiga el objeto del complemento de Excel.

    Set StudioMacrosAddin = Application.COMAddIns.Item ("WinshuttleStudioMacros.AddinModule")

  3. Consiga el objeto COM del objeto del complemento.

    Set StudioMacros = StudioMacrosAddin.Object.Macros

  4. Seleccione el script de Query que desee ejecutar y defina otras propiedades de ejecución (consulte Propiedades para un objeto de complemento de Query).

    Dim strShuttleFile = "C:\Table_20140930_143519.qsq"

  5. Abra el script que va a ejecutar.

    StudioMacros.OpenScript (strShuttleFile)

  6. Ejecute AddinObject para ejecutar el script de Query.

    StudioMacros.RunScript

Propiedades para un objeto de complemento de Query

La configuración de la ejecución o las opciones avanzadas de ejecución que estén configuradas en el script no se respetan durante la ejecución de la macro. Se deben configurar con las diversas propiedades que se han expuesto para el objeto del complemento.

Propiedad/Función

Valor(es)/Parámetro(s)

Descripción

PublishedFile

Descripción de archivo publicado

Selecciona el archivo publicado que se va a ejecutar

OpenScript ()

Ruta del archivo de script

Selecciona el script que se va a ejecutar

OpenPublishedScript

NA

Abre el script publicado

StartRow

Número de fila

Fila de Excel a partir de la que se van a escribir los registros descargados

RecordsToFetch

N.º de registros

Número de registros que devolverá la ejecución de Query

WriteHeader

Verdadero/Falso

Escribe encabezados de asignación para los datos descargados

ExtractAllRecords

Verdadero/Falso

Invalida RecordsToFetch y extrae todos los registros

RunReason

Cadena del motivo de la ejecución

Especifica un motivo para esta ejecución

LogCell

Celda

Celda en la que se deben escribir los registros de la ejecución

SheetName

Nombre de la hoja

Nombre de la hoja que se usará para la ejecución

AlfName

Archivo de inicio de sesión automático

Nombre de inicio de sesión automático que se va a usar

RunType

Tipo de ejecución

0 – Ejecutar para obtener registros según configuración

1 – Sobrescribir RecordsToFetch y descargar solo los primeros 50 registros

RunScript

NA

Ejecutar el script

 

Código de muestra: Ejecutar un script publicado

 Sub RunPublishedQSQfile() '---------------------------------------------- ' Macro para usar el complemento WinshuttleStudioMacros con código '---------------------------------------------- ‘ ' Macro RunPublishedfile ‘ Dim StudioMacrosAddin, StudioMacros On Error GoTo ErrHandler ' OBTENER OBJETO DE COMPLEMENTO DE EXCEL Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule") If StudioMacrosAddin Is Nothing Then MsgBox "Unable to initialize object of WinshuttleStudioMacros.AddinModule addin" Exit Sub End If ' Obtener objeto com de objeto de complemento Set StudioMacros = StudioMacrosAddin.Object.Macros If StudioMacros Is Nothing Then MsgBox "Unable to initialize com object of Macros» Exit Sub End If ' Seleccione el archivo publicado para ejecutar StudioMacros.PublishedFile = "Table_20150113_150602" StudioMacros.StartRow = 2 ' si no se ha configurado, los registros se recuperarán según la configuración del script StudioMacros.RecordsToFetch = 100 ' Verdadero para recuperar todos los registros. Si se ha configurado como falso, se respetará StudioMacros.RecordsToFetch StudioMacros.ExtractAllRecords = True ' Configurar como Verdadero para escribir encabezados durante la ejecución StudioMacros.WriteHeader = True ' Configurar RunReason para proporcionar un motivo para la ejecución. StudioMacros.RunReason = "Run Reason» 'Ejecutar = 0, RunOnlyFiftyRecords = 1 StudioMacros.RunType = 0 ' Llamar a la función de ejecución para abrir el script publicado StudioMacros.OpenPublishedScript ' Llamar a la función de ejecución para ejecutar el script StudioMacros.RunScript Exit Sub ErrHandler: MsgBox Err.Description End Sub 

Código de muestra: Ejecutar un script de Query existente

  Sub RunNormalQsqFile() '---------------------------------------------- ' Macro para usar el complemento WinshuttleStudioMacros con código '---------------------------------------------- ' ' Macro RunNormalQsqFile ‘ Dim StudioMacrosAddin, StudioMacros On Error GoTo ErrHandler ' OBTENER OBJETO DE COMPLEMENTO DE EXCEL Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule") If StudioMacrosAddin Is Nothing Then MsgBox "Unable to initialize object of WinshuttleStudioMacros.AddinModule addin" Exit Sub End If ' Obtener objeto com de objeto de complemento Set StudioMacros = StudioMacrosAddin.Object.Macros If StudioMacros Is Nothing Then MsgBox "Unable to initialize com object of Macros» Exit Sub End If StudioMacros.StartRow = 2 ' si no se ha configurado, los registros se recuperarán según la configuración del script StudioMacros.RecordsToFetch = 100 ' Verdadero para recuperar todos los registros. Si se ha configurado como falso, se respetará StudioMacros.RecordsToFetch StudioMacros.ExtractAllRecords = True ' Configurar como Verdadero para escribir encabezados durante la ejecución StudioMacros.WriteHeader = True ' Configurar RunReason para proporcionar un motivo para la ejecución. StudioMacros.RunReason = "Run Reason» 'Ejecutar = 0, RunOnlyFiftyRecords = 1 StudioMacros.RunType = 0 strShuttleFile = "C:\Users\ssingh\Documents\Winshuttle\Studio\Script\Table_20140930_143519.qsq» ' Llamar a la función de ejecución para abrir el script especificado StudioMacros.OpenScript (strShuttleFile) ' Llamar a la función de ejecución para ejecutar el script StudioMacros.RunScript Exit Sub ErrHandler: MsgBox Err.Description End Sub 

Macros de Transaction

Ejecutar un script publicado

  1. Defina los objetos del complemento.

    Dim StudioMacrosAddin, StudioMacros

  2. Consiga el objeto del complemento de Excel.

    Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule")

  3. Consiga el objeto COM del objeto del complemento.

    Set StudioMacros = StudioMacrosAddin.Object.Macros

  4. Seleccione el archivo publicado que desee ejecutar y defina otras propiedades de ejecución (consulte Propiedades para un objeto de complemento de Transaction).

    Dim StudioMacros.PublishedFile = "MM02_MacroTest"

  5. Abra el script publicado.

    StudioMacros.OpenPublishedScript

  6. Ejecute AddinObject para ejecutar el script.

    StudioMacros.RunScript

Ejecutar un script de Transaction existente

  1. Defina los objetos del complemento.

    Dim StudioMacrosAddin, StudioMacros

  2. Consiga el objeto del complemento de Excel.

    Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule")

  3. Consiga el objeto COM del objeto del complemento.

    Set StudioMacros = StudioMacrosAddin.Object.Macros

  4. Seleccione el script de Transaction que desee ejecutar y defina otras propiedades de ejecución (consulte Propiedades para un objeto de complemento de Transaction).

    Dim strShuttleFile = "C:\Users\Normal_Tx_Macro.txr"

  5. Abra el script que va a ejecutar.

    StudioMacros.OpenScript (strShuttleFile)

  6. Ejecute AddinObject para ejecutar el script.

    StudioMacros.RunScript

Propiedades para un objeto de complemento de Transaction

La configuración de la ejecución o las opciones avanzadas de ejecución configuradas en el script no se respetan durante la ejecución de la macro. Se deben configurar con las diversas propiedades que se han expuesto para el objeto del complemento.

Propiedad/Función

Valor(es)/Parámetro(s)

Descripción

PublishedFile

Descripción del script publicado

Selecciona el archivo publicado que se va a ejecutar

OpenPublishedScript

NA

Abre el script publicado

OpenScript()

Ruta del archivo de script

Abre el script para ejecutarlo

StartRow

Número de fila

Fila de Excel a partir de la que debe empezar la carga de datos

EndRow

Número de fila

Última fila de Excel desde la que se cargarán los datos

WriteHeader

NA

Escribe encabezados durante la ejecución

LogColumn

Columna/Celda

Columna o celda en las que se deben escribir los registros de la ejecución

SheetName

Nombre de la hoja

Nombre de la hoja que se usará para la ejecución

AlfName

Archivo de inicio de sesión automático

Nombre de inicio de sesión automático que se va a usar

RunReason

Cadena del motivo de la ejecución

Especifica un motivo para esta ejecución

RunSelectedRows

NA

Verdadero: ejecuta solo las filas seleccionadas en Excel

RunFilteredRows

NA

Verdadero: ejecuta solo las filas mostradas en Excel

RunType

0 – Ejecutar rango especificado

1 – Ejecutar y detener en errores

2 – Ejecutar las cinco primeras filas

3 – Ejecutar solo filas de error

4 – Ejecutar solo filas no procesadas

5 – Depurar rango especificado

6 – Depurar solo la primera fila

7 – Validar rango especificado

8 – Validar las cinco primeras filas

9 – Validar solo filas de error

10 – Validar solo filas no procesadas

Selecciona el tipo de ejecución de entre los posibles valores

RunScript

NA

Ejecutar el script

Partir un documento

Esta macro se ejecuta en Excel y no usa ningún objeto del complemento. Consultar el código de muestra.

Código de muestra: Ejecutar un script publicado

  Sub RunPublishedTXRfile() '---------------------------------------------- ' Macro para usar el complemento WinshuttleStudioMacros con código '---------------------------------------------- ‘ ' Macro RunPublishedfile ‘ Dim StudioMacrosAddin, StudioMacros On Error GoTo ErrHandler ' OBTENER OBJETO DE COMPLEMENTO DE EXCEL Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule") If StudioMacrosAddin Is Nothing Then MsgBox "Unable to initialize object of WinshuttleStudioMacros.AddinModule addin" Exit Sub End If ' Obtener objeto com de objeto de complemento Set StudioMacros = StudioMacrosAddin.Object.Macros If StudioMacros Is Nothing Then MsgBox "Unable to initialize com object of Macros" Exit Sub End If ' Seleccione el archivo publicado para ejecutar StudioMacros.PublishedFile = "MM02_MacroTest" StudioMacros.StartRow = 2 StudioMacros.EndRow = 6 ' Configurar como Verdadero para escribir encabezados durante la ejecución StudioMacros.WriteHeader = True ' Configurar RunReason para proporcionar un motivo para la ejecución. StudioMacros.RunReason = "Run Reason" 'StudioMacros.RunSelectedRows = True 'StudioMacros.RunFilteredRows = True ' RunSpecifiedRange = 0, ' RunAndStopOnErrors = 1, ' RunFirstFiveRows = 2, ' RunOnlyErrorRows = 3, ' RunOnlyUnProcessedRows = 4, ' DebugSpecifiedRange = 5, ' DebugFirstRowOnly = 6, ' ValidateSpecifiedRange = 7, ' ValidateFirstFiveRows = 8, ' ValidateOnlyErrorRows = 9, ' ValidateOnlyUnProcessedRows = 10, StudioMacros.RunType = 0 ' Llamar a la función de ejecución para abrir el script especificado StudioMacros.OpenScript (strShuttleFile) ' Llamar a la función de ejecución para ejecutar el script StudioMacros.RunScript Exit Sub ErrHandler: MsgBox Err.Description End Sub 

Código de muestra: Ejecutar un script de Transaction existente

  Sub RunNormalTXRfile() '---------------------------------------------- ' Macro para usar el complemento WinshuttleStudioMacros con código  '---------------------------------------------- ‘ ' Macro RunPublishedfile ' Dim StudioMacrosAddin, StudioMacros On Error GoTo ErrHandler ' OBTENER OBJETO DE COMPLEMENTO DE EXCEL Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule") If StudioMacrosAddin Is Nothing Then MsgBox "Unable to initialize object of WinshuttleStudioMacros.AddinModule addin» Exit Sub End If ' Obtener objeto com de objeto de complemento Set StudioMacros = StudioMacrosAddin.Object.Macros If StudioMacros Is Nothing Then MsgBox "Unable to initialize com object of Macros» Exit Sub End If StudioMacros.StartRow = 2 StudioMacros.EndRow = 0 ' Configurar como Verdadero para escribir encabezados durante la ejecución StudioMacros.WriteHeader = True ' Configurar RunReason para proporcionar un motivo para la ejecución. StudioMacros.RunReason = "Run Reason" 'StudioMacros.RunSelectedRows = True 'StudioMacros.RunFilteredRows = True ' RunSpecifiedRange = 0, ' RunAndStopOnErrors = 1, ' RunFirstFiveRows = 2, ' RunOnlyErrorRows = 3, ' RunOnlyUnProcessedRows = 4, ' DebugSpecifiedRange = 5, ' DebugFirstRowOnly = 6, ' ValidateSpecifiedRange = 7, ' ValidateFirstFiveRows = 8, ' ValidateOnlyErrorRows = 9, ' ValidateOnlyUnProcessedRows = 10, StudioMacros.RunType = 0 strShuttleFile = "C:\Users\ssingh\Documents\Winshuttle\Studio\Script\Normal_Tx_Macro.txr» ' Llamar a la función de ejecución para abrir el script especificado StudioMacros.OpenScript (strShuttleFile) ' Llamar a la función de ejecución para ejecutar el script StudioMacros.RunScript Exit Sub ErrHandler: MsgBox Err.Description End Sub 

Código de muestra: Partir un documento

  Option Base 1 Sub doSplit() frmSplitDocInfo.Show End Sub Sub splitDocuments() Dim strColumn As String, _ rowTypeCol As String, _ amountCol As String, _ headerRowValue As String, _ detailRowValue As String, _ maxLines As String, _ offsetCol As String, _ offsetAccount As String, _ currentLineNumber As Integer, _ headerSumCell As String, _ rowInsertedAt As String, _ offsetValue As Currency, _ offsetCell As String, _ insertHeaderRow As Boolean With frmSplitDocInfo rowTypeCol = .tbRowTypeColumn headerRowValue = .tbHeaderRowValue detailRowValue = .tbDetailRowValue maxLines = .tbMaxLines offsetAccount = .tbOffsettingGLAcct amountCol = .tbAmountColumn offsetCol = .tbOffsetAccountColumn End With Unload frmSplitDocInfo insertHeaderRow = True strColumn = rowTypeCol & ":" & rowTypeCol Range(strColumn).Select currentLineNumber = 0 Do ActiveCell.Offset(1).Select Loop Until ActiveCell = "H" headerSumCell = ActiveCell.Address ActiveCell.Offset(1).Select While ActiveCell.Offset(1) <> "" While currentLineNumber < Val(maxLines) - 1 And ActiveCell <> "" currentLineNumber = currentLineNumber + 1 ActiveCell.Offset(1).Select Wend 'End if there's no need to insert more header rows If ActiveCell = "" Then insertHeaderRow = False 'Capture row address for inserting rows; insert rows rowInsertedAt = ActiveCell.Address Range(rowInsertedAt).Select insertLines (2) ActiveCell.Offset(-1).EntireRow.Select Selection.Copy ActiveCell.Offset(1).Select ActiveSheet.Paste Application.CutCopyMode = False 'Change amount cell in newly pasted detail line to the offsetting entry value Range(amountCol & Mid(ActiveCell.Address, InStr(2, ActiveCell.Address, "$"))).Select offsetCell = ActiveCell.Address Selection.ClearContents Range(offsetCol & Mid(ActiveCell.Address, InStr(2, ActiveCell.Address, "$"))).Select ActiveCell = offsetAccount 'Capture value for offsetting entry amount Range("$" & amountCol & Mid(headerSumCell, InStr(2, headerSumCell, "$"))).Select ActiveCell.Formula = "=SUM(R[1]C:R[" & Trim(str(currentLineNumber + 1)) & "]C)" ActiveCell.NumberFormat = "General" offsetValue = ActiveCell.Value * -1 Range(offsetCell).Value = offsetValue 'Select first header row for copying to next header row If insertHeaderRow = False Then Range(amountCol & ":" & amountCol).Select Selection.NumberFormat = "General" Range("a2").Select End End If Range(headerSumCell, "$" & amountCol & Mid(headerSumCell, InStr(2, headerSumCell, "$"))).Select Selection.Copy Selection.End(xlDown).Select ActiveCell.Offset(1).Select ActiveSheet.Paste Application.CutCopyMode = False headerSumCell = ActiveCell.Address currentLineNumber = 0 Wend End Sub Sub insertLines(howMany As Integer) Dim count As Integer For count = 1 To howMany Selection.EntireRow.Insert 'ActiveCell.Address(rowabsolute:=True).Interior = RGB(0, 255, 0) 'Selection.EntireRow.Color = RGB(0, 255, 0) Next End Sub  

Problemas conocidos