KONTOPRUEF-Logo
Sehen Sie sich auch mein anderes Produkt an:
myebilanz – die Freeware-eBilanz aus MySQL und CSV!
myebilanz

IBAN-Konverter für KONTOPRUEF-OFFLINE

Auf dieser Seite finden Sie das Grundgerüst eines IBAN-Konverters in Visual Basic. Das Programm ruft die KONTOPRUEF-Funktionen GetIban und GetBic geeignet auf. Das Projekt (inkl. ausführbarer EXE-Datei) kann hier heruntergeladen werden:

Es ist nur ein sehr rudimentäres Programm ohne jegliche Fehlerbehandlung, das lediglich die Grundlagen zeigen soll, wie man die Konvertierung angeht:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonStart.Click
        If OpenFileDialog.ShowDialog() = DialogResult.OK Then
            If SaveFileDialog.ShowDialog() = DialogResult.OK Then

                Dim myKtoPruef As Object
                Dim myLine As String, myKto As String, myBlz As String, myIbanBic As String, myUN As String

                myKtoPruef = CreateObject("Bank.KtoPruef")
                TextBox.AppendText(myKtoPruef.GetVersionExtended() + vbCrLf)

                Dim myLines() As String = Nothing
                myLines = IO.File.ReadAllLines(OpenFileDialog.FileName)
                Dim myCount As Integer = myLines.GetLength(0)
                For I = 0 To myCount - 1
                    myLine = myLines(I)
                    TextBox.AppendText("IN: " + myLine + vbCrLf)
                    Dim myParts() As String = Split(myLine, ",")
                    If myParts.GetLength(0) = 3 Then
                        myKto = myParts(1).Replace("""", "") ' ggf. Anführungszeichen entfernen
                        myBlz = myParts(2).Replace("""", "") ' ggf. Anführungszeichen entfernen
                        myIbanBic = myKtoPruef.GetIban(myBlz + "*", myKto, 0)
                        If myIbanBic = "*24 UN" Then ' nicht eindeutig ermittelbar
                            myIbanBic = myKtoPruef.GetIban(myBlz + "*", myKto + "00", 0)
                            myUN = '1' ' Uneindeutigkeitsflag auf 1 setzen
                        Else
                            myUN = "0" ' Uneindeutigkeitsflag auf 0 setzen
                        End If
                        myLine = myParts(0) + ",""" + myIbanBic + """," + myUN
                        TextBox.AppendText("OUT: " + myLine + vbCrLf)
                        My.Computer.FileSystem.WriteAllText(SaveFileDialog.FileName, myLine, I > 0)
                    End If
                Next I
            End If
        End If
    End Sub

Es konvertiert eine (CSV-)Eingabedatei, in der sich drei Werte pro Zeile befinden (ID – z.B. Kundennummer –, Kontonummer und Bankleitzahl) in eine (CSV-)Ausgabedatei, in der sich wiederum die ID befindet, IBAN~BIC und das Uneindeutigkeitsflag (siehe unten). In der gegenwärtigen Version darf als Feldtrenner nur das Komma verwendet werden, und es dürfen auch nur diese drei Felder in einer Zeile stehen! Sie können das Programm natürlich beliebig Ihren Erfordernissen anpassen (Visual Basic Express kann kostenlos von der Microsoft-Website heruntergeladen werden, falls Sie es nicht schon installiert haben).

Als Beispiel ist folgende Quelldatei enthalten:

1,"1856","76010085"
2,"7399918","76040061"

die folgende Zieldatei ergibt:

1,"DE08760100850000001856~PBNKDEFF760",0
2,"DE79760400610739991800~COBADEFFXXX",1

Wenn in der Zieldatei das hinterste Feld 0 ist, ist die ermittelte IBAN sicher richtig. Wenn hinten eine 1 enthalten ist, ist folgendes passiert:

Bei bestimmten Banken (Commerzbank inkl. Ex-Dresdner Bank, Deutsche Bank) können die Kunden Unterkonten haben (die Hauptkontonummer endet dann auf 00, die Unterkonten auf 01, 02, 03 usw.). Wer das nicht braucht oder nutzt, kann die 00 am Ende der Hauptkontonummer im Zahlungsverkehr auch weglassen. Die IBAN muss jedoch immer mit der Unterkontonummer gebildet werden (auch wenn gar keine Unterkonten genutzt werden)! KONTOPRUEF ermittelt anhand Prüfzifferberechnungen, ob für die IBAN das Unterkonto 00 angehängt werden muss oder nicht. Leider ist diese Berechnung nicht in allen Fällen eindeutig, so dass manche IBAN nur "zweifelhaft" ermittelt werden können. In diesen Fällen wird die IBAN mit angehängtem Unterkonto "00" zurückgeliefert (das ist auch die wahrscheinlichere Variante) und das "Zweifel-Flag" auf 1 gesetzt.

Die obige Beispielkontonummer "7399918" könnte wie folgt zusammengesetzt sein:

  • entweder Kundennummer 7399, Prüfziffer 9, Unterkonto 18
  • oder Kundennummer 739991, Prüfziffer 8, (weggelassenes) Unterkonto 00

In diesem Beispiel ist (nach meiner langjährigen Erfahrung) die zweite Möglichkeit viel wahrscheinlicher, und zwar aus zwei Gründen:

  • ein Unterkonto "18" wäre sehr unwahrscheinlich (wer hat schon 18 Unterkonten?) — falls hinten jedoch "01" oder "02" stünde, könnte es sich möglicherweise um ein Unterkonto handeln;
  • eine Kundennummer "7399" wäre schon sehr kurz — so kurze Kundennummern gibt es meist nur bei alteingesessenen Handwerksbetrieben, Stadtverwaltungen, Behörden u.ä., die ihr Konto schon vor rund hundert Jahren (kurz nach der Bankgründung) eröffnet haben.

Das ist aber – zugegebenermaßen – alles nur "sinnvoll geraten". Nach meiner Erfahrung kommen diese Fälle jedoch ohnehin nur höchst selten vor, so dass Sie am besten Ihren Kunden bzw. Geschäftspartner nach der korrekten IBAN fragen sollten, wenn Sie sich nicht sicher sind.

Sehen Sie sich auch mein anderes Produkt an:
myebilanz – die Freeware-eBilanz aus MySQL und CSV!
myebilanz