Příklad insertu sedmi sloupců (A-G) do tabulky na SQL.
Pro insert musí být v nastavení VBA povoleno „Microsoft ActiveX Data Objects 6.x Library“
Do sloupce „K“ skript vloží příkaz na INSERT v textové podobě, který se pak v cyklu provádí po jednotlivém řádku.
Je ošetřeno opakované spuštění – smaže předchozí data, pokud jsou vloženy ten samý den.
Jsou vynechány prázdné řádky.
Nakonec se vyčistí sloupec „K“.
----------------
Skript
----------------
Sub upload()
'Musi byt povoleno "Microsoft ActiveX Data Objects 6.0+ Library"
Dim objADO As ADODB.Connection
Dim strSQL
Dim dotaz As String
Dim ConString As String
' Priprava dat
Sheets("Zdroj").Select
Range("K2").FormulaLocal = "=KDYŽ(A2="""";""""; ""INSERT INTO DATA (JEDNA,DVA,TRI,CTYRI,PET,SEST,DATUM_VLOZENI) VALUES ('"" & A2 & ""','""& B2 & ""','""& C2 & ""','""& D2 & ""','""& E2 & ""','""& F2 & ""','"" & KDYŽ(G2="""";HODNOTA.NA.TEXT(DNES();""dd.mm.rrrr"");G2) &""')"")"
Range("K2").Select
Selection.AutoFill Destination:=Range("K2:" & "K" & Range("A" & Rows.Count).End(xlUp).Row)
' Application.Wait Now + TimeValue("00:00:01")
'Smazani predchozich dat - update pri znovuspusteni reportu
Range("K1").FormulaLocal = "=""delete FROM DATA where DATUM_VLOZENI like '""& HODNOTA.NA.TEXT(DNES();""dd.mm.rr"") & ""'"""
' Upload na SQL
Set objADO = CreateObject("ADODB.Connection")
' Rucni dotaz na DB
'objADO.Properties("Prompt") = 2
objADO.Open "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=SERVER; UID=LOGIN; PWD=PASSWORD;"
'SQL spusteni dotazu generovaneho v excelu jako text
pocet = Range("K" & Rows.Count).End(xlUp).Row
For provedeni = 1 To pocet ' prvni radek
dotaz = Sheets("Zdroj").Range("K" & provedeni)
If dotaz <> "" Then
objADO.Execute dotaz
End If
Next provedeni
objADO.Close
Set objADO = Nothing
'Vymaz prikazu
Range("K:K").Clear
End Sub