version=1.0.0 vdate=03.08.2016 fname=udf_joinsql.bas ns=%NAMESPACE% fpath=/vba/excel ====== [VBA][Excel] joinSql ====== ==Version %%version%% - %%vdate%%== {{%%fname%%|Download %%fname%% (V-%%version%%)}} Ich komme immer wieder zu dem Punkt, wo ich einmalig aus einer Excel-Tabelle SQL-Insert-Scripts erstellen muss. Bisher habe ich das von Hand mit Formeln zusammengeschustert. Jetzt habe ich aber eine VBA-Funktion geschrieben, die mir das mehr oder weniger abnimmt. ===== Definition ===== '/** ' * Setz ein einfaches Insert zusammen ' * @example =joinSql("MY_TABLE"; A$9:Q$9; A11:Q11; A$10:Q$10) ' * ' * @param Cell/String Name der Zieltabelle ' * @param Range Range mit den Spaltennamen ' * @param Range Range mit den Daten (eine Zeile) ' * @param Range Range mit den Datentypzuweisung. Die Typenzuweisung ist typ & attribut. ' * @param String Name der Sqeunez ' * @return String ' */ Public Function joinSql( _ ByVal iTableName As String, _ ByRef iHeaderRange As Range, _ ByRef iDataRange As Range, _ Optional ByRef iTypeRange As Range, _ Optional ByVal iSequenceName As String _ ) As String ==== Typen ==== ***s** String text -> 'text' ***d** Datum 1.2.2016 -> TO_DATE('02/01/2016', 'MM/DD/YYYY') ***i** SEQUENZ.NEXTVAL ***x** Spalte unterdrücken * Wert unverändert zurückgeben ***n** Standard: NULL ***e** Empty: "" ***0** Null: 0 ***t** SYSDATE * Wenn die Spalte keinen Eintrag im HeaderRange hat, wird sie unterdrück * Unordered List ItemSpalten, welche im TypeRange 'x' drin haben, werden ebenfalls unterdrückt * Die Attribute zur Nullregelung können dem Type angehängt werden === Beispiele zu den Typeneinträgen === *sn -> Feld ist ein String, wenn kein Wert vorhanden ist wird der Text NULL ausgegeben *se -> Wieder ein String. Aber der Leerwert wird als "" ausgegeben *s -> Wie sn *0 -> ohne formatierung. Ein Leerwert wird als 0 ausgegeben *etc. ===== Code ===== Und hier noch der Code zu den oben bechreibenen Funktionen >Dieser Coder ist für Oracle geschrieben. Für andere DBMS müssend ie Konstanten C_DATE_FORMAT und C_DATE_TIMESTAMP ersetzt werden