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).
- Ö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.
- Drücken Sie Alt+F11.
- Klicken Sie im VBA-Editor unter Microsoft Excel-Objekte auf das Blatt, welches die Daten enthält, die Sie ausführen möchten.
- Kopieren Sie den unten stehenden Code und fügen Sie ihn in das Fenster ein.
- 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.
- Klicken Sie auf Speichern und schließen Sie den VBA-Editor.
- Klicken Sie in Excel auf die Registerkarte Ansicht und dann auf Makros.
- 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
- Add-In-Objekte definieren.
Dim StudioMacrosAddin, StudioMacros
- Add-In-Objekt aus Excel erhalten.
Set StudioMacrosAddin = Application.COMAddIns.Item ("WinshuttleStudioMacros.AddinModule")
- COM-Objekt von Add-In-Objekt erhalten.
Set StudioMacros = StudioMacrosAddin.Object.Macros
- 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"
- Die veröffentlichte Skriptdatei öffnen.
StudioMacros.OpenPublishedScript
- Add-In-Objekt ausführen, um das Query Skript auszuführen.
StudioMacros.RunScript
Ein bestehendes Query Skript ausführen.
- Add-In-Objekte definieren.
Dim StudioMacrosAddin, StudioMacros
- Add-In-Objekt aus Excel erhalten.
Set StudioMacrosAddin = Application.COMAddIns.Item ("WinshuttleStudioMacros.AddinModule")
- COM-Objekt von Add-In-Objekt erhalten.
Set StudioMacros = StudioMacrosAddin.Object.Macros
- 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"
- Das auszuführende Skript öffnen.
StudioMacros.OpenScript (strShuttleFile)
- 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
- Add-In-Objekte definieren.
Dim StudioMacrosAddin, StudioMacros
- Add-In-Objekt aus Excel erhalten.
Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule")
- COM-Objekt von Add-In-Objekt erhalten.
Set StudioMacros = StudioMacrosAddin.Object.Macros
- 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"
- Das veröffentlichte Skript öffnen.
StudioMacros.OpenPublishedScript
- AddinObject ausführen, um das Skript auszuführen.
StudioMacros.RunScript
Ein bestehendes Transaction Skript ausführen.
- Add-In-Objekte definieren.
Dim StudioMacrosAddin, StudioMacros
- Add-In-Objekt aus Excel erhalten.
Set StudioMacrosAddin = Application.COMAddIns.Item("WinshuttleStudioMacros.AddinModule")
- COM-Objekt von Add-In-Objekt erhalten.
Set StudioMacros = StudioMacrosAddin.Object.Macros
- 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"
- Das auszuführende Skript öffnen.
StudioMacros.OpenScript (strShuttleFile)
- 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
|