| Synkronizer mit Visual Basic for Applications
Synkronizer kann auch mit Visual Basic for Applications (VBA) benutzt werden. Dies hat den grossen Vorteil, dass wiederkehrende, standardisierte oder komplexe Vergleichsprozesse automatisiert werden können.
Syntax
Die Syntax der Synkronizer-Funktion ist wie folgt:
Synkronizer(sFileOld As String,
sFileNew As String,
vSheetOld As Variant,
vSheetNew As Variant,
Optional sRangeOld As String,
Optional sRangeNew As String,
Optional sCompareType As String,
Optional sHide As String,
Optional sFormats As String,
Optional sKeyFields As String,
Optional sDBOptions As String,
Optional sLink1on1 As String,
Optional sAction As String,
Optional sReportFile As String,
Optional bHyperlinks As Boolean,
Optional bDeleteBGColor As Boolean,
Optional sFilters As String,
Optional sIgnoreCols As String,
Optional dTolerance As String,
Optional sTextfilter As String) As Variant
Rückgabewert
Je nach Ergebnis retourniert die Funktion Synkronizer folgende Werte:
| "Err" |
Synkronizer konnte die Parameter nicht auswerten oder es sind andere Fehler aufgetaucht. |
| Array |
Synkronizer konnte Abweichungen erkennen und retourniert die Differenzen in einem zweidimensionalen Array, welches wie folgt gegliedert ist: |
| |
Element(1, 1): Bezeichnung "Total Differenzen"
Element(1, 2): Anzahl Total Differenzen
Element(2, 1): Bezeichnung "Gelöschte Tabellen"
Element(2, 2): Anzahl Gelöschte Tabellen
Element(3, 1): Bezeichnung "Hinzugefügte Tabellen"
Element(3, 2): Anzahl Hinzugefügte Tabellen
Element(4, 1): Bezeichnung "Gelöschte Spalten"
Element(4, 2): Anzahl Gelöschte Spalten
Element(5, 1): Bezeichnung "Hinzugefügte Spalten"
Element(5, 2): Anzahl Hinzugefügte Spalten
Element(6, 1): Bezeichnung "Doppelte Indizes"
Element(6, 2): Anzahl doppelte Indizes
Element(7, 1): Bezeichnung "Doppelte Datensätze"
Element(7, 2): Anzahl doppelte Datensätze
Element(8, 1): Bezeichnung "Gelöschte Zeilen"
Element(8, 2): Anzahl Gelöschte Zeilen
Element(9, 1): Bezeichnung "Hinzugefügte Zeilen"
Element(9, 2): Anzahl Hinzugefügte Zeilen
Element(10, 1): Bezeichnung "Unterschiedliche Werte"
Element(10, 2): Anzahl Unterschiedliche Werte
Element(11, 1): Bezeichnung "Unterschiedliche Formate"
Element(11, 2): Anzahl Unterschiedliche Formate
Element(12, 1): Bezeichnung "Verwendete Filter"
Element(12, 2): Verwendete Filter |
Parameter
Die Synkronizer-Funktion umfasst folgende Parameter:
| sFileOld |
Datei (inkl. Verzeichnis) der 1. Datei (Master).
Es können Excel-, Text- und ODC-Dateien eingegeben werden. Access-Datenbanken müssen über eine ODC-Datei angesteuert werden.
|
| sFileNew |
Datei (inkl. Verzeichnis) der 2. Datei (Änderungen). |
| vSheetOld |
Tabellennummer oder -name der 1. Datei. Sie können folgende Werte eingeben: |
| |
1 3 "sheet1" "" |
die erste Tabelle wird verglichen die dritte Tabelle wird verglichen die Tabelle mit dem Namen "Tabelle1" wird verglichen alle Tabellen werden verglichen.
|
| vSheetNew |
Tabellennummer oder -name der 2. Datei |
| sRangeOld |
Optional. A1-Bereich der 1. Tabelle. Wenn dieser Parameter leer ist, werden alle Zellen verglichen. |
| aRangeNew |
Optional. A1-Bereich der 2. Tabelle |
| sCompareType |
Optional. Dieser Parameter enthält den Vergleichstyp. Sie können eine oder mehrere Optionen wählen: |
| |
v f c |
Vergleich nach Werten (values) Vergleich nach Formeln Vergleich nach Kommentaren |
| |
Bleibt dieser Parameter leer, dann wird ein Vergleich nach "normalen" Werten vorgenommen (siehe auch 2.2.1 Bereich "Inhalte"). Wollen Sie z.B. die Werte "sensitiv" vergleichen, dann geben Sie "vs" ein. |
| sHide |
Optional. Dieser Parameter enthält die Anzeigeoptionen. Sie können bestimmen, welche Daten ausgeblendet werden sollen. Folgende Optionen stehen zur Verfügung: |
| |
c r d v f i b |
Nicht verbundene Spalten Nicht verbundene Zeilen Duplikate Unterschiedliche Zellwerte Unterschiedliche Formate Unveränderte Zellen die Hintergrundfarbe wird vor dem Vergleich gelöscht |
| sFormats |
Optional. Dieser Parameter enthält die Formatierungsoptionen. Sie können. Folgende Formate stehen zur Auswahl: |
| |
n a f b p t |
Zahlen Ausrichtung Schrift Rahmen Muster Schutz |
| sKeyFields |
Optional. Wenn Sie einen Datenbankvergleich vornehmen wollen, dann müssen Sie hier den Namen des Primärschlüssels eingeben. Bei mehreren Primärschlüsseln müssen die einzelnen Schlüssel mit Semikolons getrennt werden (z.B. "Nachname;Vorname"). Wollen Sie keinen Datenbankvergleich vornehmen, dann bleibt dieses Feld leer. |
| sDBOptions |
Optional. Wenn Sie einen Datenbankvergleich vornehmen, können zusätzlich folgende Parameter eingegeben werden: |
| |
s g i |
die Daten werden sortiert die Daten werden gruppiert eine zusätzliche Spalte mit den SynkIDs wird eingefügt |
| sLink1on1 |
Optional. Wenn die Zeilen und/oder Spalten 1:1 verglichen werden sollen (d.h. wenn keine gelöschten/hinzugefügten Zeilen/Spalten vorhanden sind), können sie diese Optionen wählen: |
| |
c r |
die Spalten werden 1:1 verglichen die Zeilen werden 1:1 verglichen |
| sAction |
Optional. Dieser Parameter enthält die Aktion, welche ausgeführt werden soll. Folgende Zeichen können eingegeben werden: |
| |
h r n |
Die Abweichungen werden markiert Ein Abweichungsprotokoll wird erstellt Navigator Symbolleiste |
| sReportFile |
Optional. Wenn Sie ein Abweichungsprotokoll erstellen wollen, dann müssen Sie den Namen und Verzeichnis des zu erstellenden Protokolls eingeben (z.B. C:\Documents\Report.xls). |
| bHyperlinks |
Optional. Wenn das Abweichungsprotokoll Hyperlinks enthalten soll, dann müssen Sie hier den Wert "True" setzen. |
| bDeleteBGColor |
Option. Falls hier True gesetzt wird, wird die Hintergrundfarbe der Zellen vor dem Vergleich entfernt. |
| sFilters |
Optional. Wenn die Daten gefiltert verglichen werden sollen, dann können folgende Filter gesetzt werden: |
| |
s t d c r k f |
sensitiver Vergleich Glätten Datentyp ignorieren unsichtbare Spalten ignorieren unsichtbare Zeilen ignorieren Konstanten ignorieren Formeln ignorieren |
| sIgnoreCols |
Optional. Wenn bestimmte Spalten vom Vergleich ausgeschlossen werden sollen, dann können Sie mittels dieses Parameters die Spalten eingeben. Geben Sie entweder die Spaltennummern oder Spaltennamen bei einem Datenbankvergleich ein. Die einzelnen Spalten werden mittels Semikolon (;) getrennt. |
| dTolerance |
Optional. Bei numerischen Werten können Sie bestimmen, ob Synkronizer nur Differenzen ab einer bestimmten Grösse als Differenz ausspucken soll. Wenn Sie z.B. 0.10 eingeben, werden nur Differenzen, welche grösser als 0.10 sind, ausgewiesen. |
| sTextfilter |
Optional. Es können auch alphanumerische Felder gefiltert werden. Geben Sie ein "like" oder "RegEx"-Filterkriterium ein. Der Parameter muss wie folgt eingegeben werden: |
| |
Like-Kriterium RegEx-Kriterium |
like:done regex:yes|no |
Synkronizer in Ihren VBA Skripten benutzen
Damit Sie Synkronizer mit VBA ausführen können, müssen Sie in Ihren Skripten eine Referenz zu Synkronizer herstellen. Führen Sie folgende Schritte aus:
| 1. |
öffnen Sie die Excel-Datei, welches das VBA-Programm enthält |
| 2. |
öffnen Sie den VBA Editor (Tastaturkombination Alt-F11) |
| 3. |
aktivieren Sie Ihre Excel-Datei |
| 4. |
Markieren Sie den Menübefehl Extras - Verweise |
| 5. |
Suchen Sie in der Liste den Eintrag "Synkronizer95" und markieren das Kontrollkästchen. |
Nun können Sie Synkronizer in Ihren VBA-Programmen verwenden. Nachfolgend sind ein paar VBA-Beispiele aufgeführt, welche Sie gerne verwenden können.
VBA-Beispiele
Dieses Beispiel markiert die Abweichungen in den Tabellen Addresses:
Public Sub Example_1()
Dim vSynk As Variant
Dim sMsg As String
Dim i As Integer
On Error GoTo errH
vSynk = Synkronizer(sFileOld:="C:\Documents\FileOld.xls", _
sFileNew:="C:\Documents\FileNew.xls", _
vSheetOld:="Addresses", _
vSheetNew:="Addresses", _
sAction:="h")
Beep
If Not IsArray(vSynk) Then
MsgBox vSynk, vbExclamation
ElseIf vSynk(1, 2) = 0 Then
MsgBox "No differences noted.", vbInformation
Else
sMsg = "Synkronizer found differences:" & vbNewLine & vbNewLine
For i = 1 To UBound(vSynk)
sMsg = sMsg & vSynk(i, 1) & ": " & vSynk(i, 2) & vbNewLine
Next i
MsgBox sMsg, vbInformation
End If
Exit Sub
errH:
MsgBox Err.Description, vbExclamation
End Sub
Dieses Beispiel markiert die Abweichungen in allen Tabellen der Dateien FileOld.xls und FileNew.xls. Zusätzlich werden alle unveränderten Zeilen ausgeblendet:
Public Sub Example_2()
Dim vSynk As Variant
Dim sMsg As String
Dim i As Integer
On Error GoTo errH
vSynk = Synkronizer(sFileOld:="C:\Documents\FileOld.xls", _
sFileNew:="C:\Documents\FileNew.xls", _
vSheetOld:="", _
vSheetNew:="", _
sHide:="i", _
sAction:="h")
Beep
If Not IsArray(vSynk) Then
MsgBox vSynk, vbExclamation
ElseIf vSynk(1, 2) = 0 Then
MsgBox "No differences noted.", vbInformation
Else
sMsg = "Synkronizer found differences:" & vbNewLine & vbNewLine
For i = 1 To UBound(vSynk)
sMsg = sMsg & vSynk(i, 1) & ": " & vSynk(i, 2) & vbNewLine
Next i
MsgBox sMsg, vbInformation
End If
Exit Sub
errH:
MsgBox Err.Description, vbExclamation
End Sub
Diese Prozedur vergleicht die Werte der ersten Tabellen der beiden Dateien miteinander und dokumentiert die Abweichungen in der Datei "Report.xls".
Public Sub Example_3()
Dim vSynk As Variant
Dim sMsg As String
Dim i As Integer
On Error GoTo errH
vSynk = Synkronizer(sFileOld:="C:\Documents\FileOld.xls", _
sFileNew:="C:\Documents\FileNew.xls", _
vSheetOld:=1, _
vSheetNew:=1, _
sAction:="r", _
sReportFile:="C:\Documents\Report.xls")
Beep
If Not IsArray(vSynk) Then
MsgBox vSynk, vbExclamation
ElseIf vSynk(1, 2) = 0 Then
MsgBox "No differences noted.", vbInformation
Else
sMsg = "Synkronizer found differences:" & vbNewLine & vbNewLine
For i = 1 To UBound(vSynk)
sMsg = sMsg & vSynk(i, 1) & ": " & vSynk(i, 2) & vbNewLine
Next i
MsgBox sMsg, vbInformation
End If
Exit Sub
errH:
MsgBox Err.Description, vbExclamation
End Sub
Diese Prozedur vergleicht die Datenbanken "Addresses" miteinander. Die Datenbanken werden nach dem Primärschlüssel "ID" verglichen. Zudem werden die Daten gruppiert und mit einem ID versehen. Schlussendlich werden die Differenzen markiert und der Navigator wird gestartet.
Public Sub Example_4()
Dim vSynk As Variant
Dim sMsg As String
Dim i As Integer
On Error GoTo errH
vSynk = Synkronizer(sFileOld:="C:\Documents\FileOld.xls", _
sFileNew:="C:\Documents\FileNew.xls", _
vSheetOld:="Addresses", _
vSheetNew:="Addresses", _
sHide:="b", _
sKeyFields:="ID", _
sDBOptions:="gi", _
sAction:="hn")
Beep
If Not IsArray(vSynk) Then
MsgBox vSynk, vbExclamation
ElseIf vSynk(1, 2) = 0 Then
MsgBox "No differences noted.", vbInformation
Else
sMsg = "Synkronizer found differences:" & vbNewLine & vbNewLine
For i = 1 To UBound(vSynk)
sMsg = sMsg & vSynk(i, 1) & ": " & vSynk(i, 2) & vbNewLine
Next i
MsgBox sMsg, vbInformation
End If
Exit Sub
errH:
MsgBox Err.Description, vbExclamation
End Sub
Mehrere Dateien vergleichen
Diese Prozedur vergleicht eine Datei ("Master.xls") mit allen Dateien, welche sich im Verzeichnis "C:\Documents\New\" befinden und erstellt für jeden Vergleich ein separates Abweichungsprotokoll. Die Protokolle werden im Verzeichnis "C:\Documents\Reports" abgelegt.
Public Sub Example_5()
Dim sFile As String
Dim vSynk As Variant
Dim sFileOld As String
Dim sFileNew As String
Dim sPathNew As String
Dim sPathReport As String
Dim sFileReport As String
On Error GoTo errH
sPathReport = "C:\Documents\Reports\"
sFileOld = "C:\Documents\Old\Master.xls"
sPathNew = "C:\Documents\New\"
sPathReport = "C:\Documents\Reports\"
sFileNew = Dir(sPathNew & "*.xls")
Do While sFileNew <> ""
sFileReport = "Difference Report " & sFileNew
vSynk = Synkronizer(sFileOld:=sFileOld, _
sFileNew:=sPathNew & sFileNew, _
vSheetOld:=1, _
vSheetNew:=1, _
sAction:="r", _
sReportFile:=sPathReport & sFileReport)
If Not IsArray(vSynk) Then
MsgBox vSynk, vbExclamation
End
End If
Workbooks(sFileNew).Close SaveChanges:=True
Workbooks(sFileReport).Close SaveChanges:=False
sFileNew = Dir
Loop
Beep
MsgBox "Finished"
Exit Sub
errH:
MsgBox Err.Description, vbExclamation
End Sub
|