Produkt Hilfe>Studio v11 (LMS) Webhilfe

Verwenden Sie Makros, um ein Skript auszuführen.

Sie können Makros verwenden, um Query Skripte und Transaction Skripte auszuführen.

Um ein Skript durch die Verwendung eines Makros auszuführen, erstellen Sie das Makro in Visual Basic for Applications (VBA).

  1. Öffnen Sie die Datendatei, die mit dem Skript verknüpft ist, welches Sie ausführen möchten.

    Wichtig: Vergewissern Sie sich, dass Sie eine Datei mit Makros, eine .xlsm-Datei, verwenden.

  2. Drücken Sie Alt+F11.
  3. Klicken Sie im VBA-Editor unter Microsoft Excel-Objekte auf das Blatt, welches die Daten enthält, die Sie ausführen möchten.
  4. Kopieren Sie den unten stehenden Code und fügen Sie ihn in das Fenster ein.
  5. Ersetzen Sie unten den Datendateipfad, den Skriptdateipfad, den Blattnamen und den Namen für die automatische Anmeldung mit den Informationen für Ihre Dateien und mit Ihrem Namen für die automatische Anmeldung.
  6. Klicken Sie auf Speichern und schließen Sie den VBA-Editor.
  7. Klicken Sie in Excel auf die Registerkarte Ansicht und dann auf Makros.
  8. Klicken Sie auf das Makro, das ausgeführt werden soll, und klicken Sie anschließend auf Ausführen.

Hinweis: Vergewissern Sie sich, dass das Excel-Add-In nicht aktiv ist (dass Sie nicht in angemeldet sind).

Makros

Query Makros

Ein veröffentlichtes Skript ausführen

  1. Add-In-Objekte definieren.

    Dim StudioMacrosAddin, StudioMacros

  2. Add-In-Objekt aus Excel erhalten.

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

  3. COM-Objekt von Add-In-Objekt erhalten.

    Set StudioMacros = StudioMacrosAddin.Object.Macros

  4. Die auszuführende, veröffentlichte Datei wählen und weitere Ausführungseigenschaften definieren (siehe Eigenschaften für ein Query Add-In-Objekt).

    Dim StudioMacros.PublishedFile = "Table_20150113_150602"

  5. Die veröffentlichte Skriptdatei öffnen.

    StudioMacros.OpenPublishedScript

  6. Add-In-Objekt ausführen, um das Query Skript auszuführen.

    StudioMacros.RunScript

Ein bestehendes Query Skript ausführen.

  1. Add-In-Objekte definieren.

    Dim StudioMacrosAddin, StudioMacros

  2. Add-In-Objekt aus Excel erhalten.

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

  3. COM-Objekt von Add-In-Objekt erhalten.

    Set StudioMacros = StudioMacrosAddin.Object.Macros

  4. Das auszuführende Query Skript wählen und weitere Ausführungseigenschaften definieren (siehe Eigenschaften für ein Query Add-In-Objekt).

    Dim strShuttleFile = "C:\Table_20140930_143519.qsq"

  5. Das auszuführende Skript öffnen.

    StudioMacros.OpenScript (strShuttleFile)

  6. Add-In-Objekt ausführen, um das Query Skript auszuführen.

    StudioMacros.RunScript

Eigenschaften für ein Query Add-In-Objekt

Ausführungseinstellungen oder erweiterte Ausführungsoptionen, die im Skript eingestellt sind, werden während der Ausführung des Makros nicht berücksichtigt. Diese müssen eingestellt werden, indem verschiedene Eigenschaften angewendet werden, die für das Add-In-Objekt eingeblendet wurden.

Eigenschaft/Funktion

Wert(e)/Parameter

Beschreibung

PublishedFile

Beschreibung der veröffentlichten Datei

Wählt die auszuführende, veröffentlichte Datei aus

OpenScript ()

Skriptdateipfad

Wählt das auszuführende Skript aus

OpenPublishedScript

NV

Öffnet das veröffentlichte Skript

StartRow

Zeilenanzahl

Excel-Zeile, ab der heruntergeladene Datensätze geschrieben werden sollen

RecordsToFetch

Anzahl an Datensätzen

Anzahl der Datensätze, die bei der Query Ausführung ausgegeben werden sollen

WriteHeader

True/False

Schreibt Zuordnungskopfzeilen für die heruntergeladenen Daten

ExtractAllRecords

True/False

Überschreibt RecordsToFetch und extrahiert alle Datensätze

RunReason

Ausführungsgrund-String

Einen Grund für diese Ausführung angeben

LogCell

Zelle

Zelle, in die Ausführungsprotokolle geschrieben werden sollen

SheetName

Name des Blattes

Name des Blattes, der für die Ausführung verwendet werden soll

AlfName

AutoLogon-Datei

Name der zu verwendenden automatischen Anmeldung

RunType

Ausführungsart

0 – Ausführung, um einstellungsgemäß Datensätze einzuholen

1 – RecordsToFetch überschreiben und nur die ersten 50 Datensätze herunterladen

RunScript

NV

Skript ausführen

 

Beispielcode: Ein veröffentlichtes Skript ausführen

 Sub RunPublishedQSQfile() '---------------------------------------------- ' Makro zur Verwendung des WinshuttleStudioMacros-Addins mit Code' 'RunPublishedfile-Makro ' Dim StudioMacrosAddin, StudioMacros On Error GoTo ErrHandler ' RUFEN SIE DAS ADD-IN-OBJEKT AUS EXCEL AB Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule") If StudioMacrosAddin Is Nothing Then MsgBox "Nicht in der Lage, das Objekt WinshuttleStudioMacros.AddinModule-Add-in zu initialisieren" Exit Sub End If ' Rufen Sie das COM-Objekt aus dem Add-In-Objekt ab Set StudioMacros = StudioMacrosAddin.Object.Macros If StudioMacros Is Nothing Then MsgBox "Nicht in der Lage, das Com-Objekt der Makros zu initialisieren“ Exit Sub End If ' Wählen Sie die auszuführende, veröffentlichte Datei StudioMacros.PublishedFile = "Table_20150113_150602" StudioMacros.StartRow = 2 ' Falls nicht eingestellt, werden die Datenbanken gemäß den Skripteinstellungen abgerufen StudioMacros.RecordsToFetch = 100 ' Bei True werden alle Datensätze abgerufen. Bei False wird StudioMacros.RecordsToFetch berücksichtigt StudioMacros.ExtractAllRecords = True ' Bei True werden während der Ausführung Kopfzeilen geschrieben StudioMacros.WriteHeader = True ' Aktivieren Sie RunReason, um einen Ausführungsgrund bereitzustellen. StudioMacros.RunReason = "Run Reason" 'Run = 0, RunOnlyFiftyRecords = 1 StudioMacros.RunType = 0 ' Rufen Sie die Ausführungsfunktion ab, um das veröffentlichte Skript zu öffnen StudioMacros.OpenPublishedScript ' Rufen Sie die Ausführungsfunktion ab, um das Skript auszuführen StudioMacros.RunScript Exit Sub ErrHandler: MsgBox Err.Description End Sub 

Beispielcode: Ein bestehendes Query Skript ausführen

  Sub RunNormalQSQfile() '---------------------------------------------- ' Makro zur Verwendung des WinshuttleStudioMacros-Addins mit Code '---------------------------------------------- ' ' RunNormalQsqFile-Makro ‚ Dim StudioMacrosAddin, StudioMacros On Error GoTo ErrHandler ' RUFEN SIE DAS ADD-IN-OBJEKT AUS EXCEL AB Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule") If StudioMacrosAddin Is Nothing Then MsgBox "Nicht in der Lage, das Objekt WinshuttleStudioMacros.AddinModule-Add-in zu initialisieren" Exit Sub End If ' Rufen Sie das COM-Objekt aus dem Add-In-Objekt ab Set StudioMacros = StudioMacrosAddin.Object.Macros If StudioMacros Is Nothing Then MsgBox "Nicht in der Lage, das COM-Objekt der Makros zu initialisieren“ Exit Sub End If StudioMacros.StartRow = 2 ' Falls nicht eingestellt, werden die Datenbanken gemäß den Skripteinstellungen abgerufen StudioMacros.RecordsToFetch = 100 ' Bei True werden alle Datensätze abgerufen. Bei False wird StudioMacros.RecordsToFetch berücksichtigt StudioMacros.ExtractAllRecords = True ' Bei True werden während der Ausführung Kopfzeilen geschrieben StudioMacros.WriteHeader = True ' Aktivieren Sie RunReason, um einen Ausführungsgrund bereitzustellen. StudioMacros.RunReason = "Run Reason" 'Run = 0, RunOnlyFiftyRecords = 1 StudioMacros.RunType = 0 strShuttleFile = "C:\Users\ssingh\Documents\Winshuttle\Studio\Script\Table_20140930_143519.qsq" ' Rufen Sie die Ausführungsfunktion ab, um das spezifizierte Skript zu öffnen StudioMacros.OpenScript (strShuttleFile) ' Rufen Sie die Ausführungsfunktion ab, um das Skript auszuführen StudioMacros.RunScript Exit Sub ErrHandler: MsgBox Err.Description End Sub 

Transaktionsmakros

Ein veröffentlichtes Skript ausführen

  1. Add-In-Objekte definieren.

    Dim StudioMacrosAddin, StudioMacros

  2. Add-In-Objekt aus Excel erhalten.

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

  3. COM-Objekt von Add-In-Objekt erhalten.

    Set StudioMacros = StudioMacrosAddin.Object.Macros

  4. Wählen Sie die auszuführende, veröffentlichte Datei und definieren Sie die Ausführungseigenschaften (siehe Eigenschaften für ein Transaction Add-In-Objekt).

    Dim StudioMacros.PublishedFile = "MM02_MacroTest"

  5. Das veröffentlichte Skript öffnen.

    StudioMacros.OpenPublishedScript

  6. AddinObject ausführen, um das Skript auszuführen.

    StudioMacros.RunScript

Ein bestehendes Transaction Skript ausführen.

  1. Add-In-Objekte definieren.

    Dim StudioMacrosAddin, StudioMacros

  2. Add-In-Objekt aus Excel erhalten.

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

  3. COM-Objekt von Add-In-Objekt erhalten.

    Set StudioMacros = StudioMacrosAddin.Object.Macros

  4. Wählen Sie das auszuführende Transaction Skript und definieren Sie die Ausführungseigenschaften (siehe Eigenschaften für ein Transaction Add-In-Objekt).

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

  5. Das auszuführende Skript öffnen.

    StudioMacros.OpenScript (strShuttleFile)

  6. AddinObject ausführen, um das Skript auszuführen.

    StudioMacros.RunScript

Eigenschaften für ein Transaction Add-In-Objekt

Ausführungseinstellungen oder erweiterte Ausführungsoptionen, die im Skript eingestellt sind, werden während der Ausführung des Makros nicht berücksichtigt. Diese müssen über die verschiedene Eigenschaften eingestellt werden, die für das Add-In-Objekt eingeblendet wurden.

Eigenschaft/Funktion

Wert(e)/Parameter

Beschreibung

PublishedFile

Beschreibung des veröffentlichten Skripts

Wählt die auszuführende, veröffentlichte Datei aus

OpenPublishedScript

NV

Öffnet das veröffentlichte Skript

OpenScript()

Skriptdateipfad

Öffnet das auszuführende Skript

StartRow

Zeilenanzahl

Excel-Zeile, von der ab der Datenupload beginnen soll

EndRow

Zeilenanzahl

Letzte Excel-Zeile, von der Daten hochgeladen werden sollen

WriteHeader

NV

Schreibt während der Ausführung Kopfzeilen

LogColumn

Spalte/Zelle:

Zeile oder Zelle, in die die Ausführungsprotokolle geschrieben werden sollen

SheetName

Name des Blattes

Name des Blattes, der für die Ausführung verwendet werden soll

AlfName

AutoLogon-Datei

Name der zu verwendenden automatischen Anmeldung

RunReason

Ausführungsgrund-String

Einen Grund für diese Ausführung angeben

RunSelectedRows

NV

True: Es werden nur die in Excel ausgewählten Zeilen ausgeführt

RunFilteredRows

NV

True: Es werden nur die in Excel angezeigten Zeilen ausgeführt

RunType

0 – Angegebenen Bereich ausführen

1 – Ausführen und bei Fehlern anhalten

2 – Ersten fünf Zeilen ausführen

3 – Nur Zeilen mit Fehlern ausführen

4 – Nur nicht verarbeitete Zeilen ausführen

5 – Angegebenen Bereich debuggen

0 – Nur erste Zeile debuggen

0 – Angegebenen Bereich validieren

8 – Ersten fünf Zeilen validieren

9 – Nur Fehlerzeilen validieren

10 – Nur nicht verarbeitete Zeilen validieren

Wählen Sie eine Ausführungsart aus den möglichen Werten aus

RunScript

NV

Skript ausführen

Dokument splitten

Dieses Makro wird in Excel ausgeführt und verwendet keine Add-In-Objekte. Siehe Beispielcode.

Beispielcode: Ein veröffentlichtes Skript ausführen

 Sub RunPublishedTXRfile() '---------------------------------------------- ' Makro zur Verwendung des WinshuttleStudioMacros-Addins mit Code ' RunPublishedfile.Makro Dim StudioMacrosAddin, StudioMacros On Error GoTo ErrHandler ' RUFEN SIE DAS ADD-IN-OBJEKT AUS EXCEL AB Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule") If StudioMacrosAddin Is Nothing Then MsgBox "Nicht in der Lage, das Objekt WinshuttleStudioMacros.AddinModule-Add-in zu initialisieren" Exit Sub End If ' Rufen Sie das COM-Objekt aus dem Add-In-Objekt ab Set StudioMacros = StudioMacrosAddin.Object.Macros If StudioMacros Is Nothing Then MsgBox "Nicht in der Lage, das COM-Objekt der Makros zu initialisieren“ Exit Sub End If ' Wählen Sie die auszuführende, veröffentlichte Datei StudioMacros.PublishedFile = "MM02_MacroTest" StudioMacros.StartRow = 2 StudioMacros.EndRow = 6 ' Bei True werden Datenzeilen während der Ausführung geschrieben StudioMacros.WriteHeader = True ' Aktivieren Sie RunReason, um einen Ausführungsgrund bereitzustellen. 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 ' Rufen Sie die Ausführungsfunktion ab, um das veröffentlichte Skript zu öffnen StudioMacros.OpenPublishedScript ' Rufen Sie die Ausführungsfunktion ab, um das Skript auszuführen StudioMacros.RunScript Exit Sub ErrHandler: MsgBox Err.Description End Sub 

Beispielcode: Ein bestehendes Transaction Skript ausführen

 Sub RunNormalTXRfile() '---------------------------------------------- ' Makro zur Verwendung des WinshuttleStudioMacros-Addins mit Code '---------------------------------------------- ' ' RunPublishedfile.Makro Dim StudioMacrosAddin, StudioMacros On Error GoTo ErrHandler ' RUFEN SIE DAS ADD-IN-OBJEKT AUS EXCEL AB Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule") If StudioMacrosAddin Is Nothing Then MsgBox "Nicht in der Lage, das Objekt WinshuttleStudioMacros.AddinModule-Add-in zu initialisieren" Exit Sub End If ' Rufen Sie das COM-Objekt aus dem Add-In-Objekt ab Set StudioMacros = StudioMacrosAddin.Object.Macros If StudioMacros Is Nothing Then MsgBox "Nicht in der Lage, das COM-Objekt der Makros zu initialisieren" Exit Sub End If StudioMacros.StartRow = 2 StudioMacros.EndRow = 0 ' Bei True werden Datenzeilen während der Ausführung geschrieben StudioMacros.WriteHeader = True ' Aktivieren Sie RunReason, um einen Ausführungsgrund bereitzustellen. 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" ' Rufen Sie die Ausführungsfunktion ab, um das angegebene Skript zu öffnen StudioMacros.OpenScript (strShuttleFile) ' Rufen Sie die Ausführungsfunktion ab, um das Skript auszuführen StudioMacros.RunScript Exit Sub ErrHandler: MsgBox Err.Description End Sub 

Beispielcode: Dokument splitten

  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  

Bekannte Probleme