vbs - Oracle DB to xls
Hallo,
dank der Hilfe im Forum hier hab ich eine vbs welche mir ein SQL-Statement auf unserer MYSQL DB ausführt und das Ergebnis in xls importiert. Ist das auch für eine Oracle DB möglich?
Hier der von mir benutzte Code:
dank der Hilfe im Forum hier hab ich eine vbs welche mir ein SQL-Statement auf unserer MYSQL DB ausführt und das Ergebnis in xls importiert. Ist das auch für eine Oracle DB möglich?
Hier der von mir benutzte Code:
Option Explicit
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
' Const adOpenKeyset = 1
' Const adOpenDynamic = 2
' Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
' Const adLockPessimistic = 2
' Const adLockOptimistic = 3
' Const adLockBatchOptimistic = 4
'---- CursorLocationEnum Values ----
' Const adUseServer = 2
Const adUseClient = 3
'---- ConnectModeEnum Values ----
' Const adModeUnknown = 0
Const adModeRead = 1
' Const adModeWrite = 2
' Const adModeReadWrite = 3
' Const adModeShareDenyRead = 4
' Const adModeShareDenyWrite = 8
' Const adModeShareExclusive = &Hc
' Const adModeShareDenyNone = &H10
' Const adModeRecursive = &H400000
Dim objExcel, objWb, SkriptPfad
Dim objSheet
Dim Conn, RS
Dim rowCount, i, headerSet
Dim x 'Zähler für Statusbar
MsgBox "Mit dem OK-Button wird der Import gestartet."& vbCrLf & "Je nach SQL-Statement kann der Import mehrere Minuten dauern!" ,64, "Info"
x = 0 'Anfangswert für Zähler - Anzahl importierter Datensätze
rowCount = 1
SkriptPfad = WScript.ScriptFullName 'Pfadermittlung
SkriptPfad = Left(SkriptPfad, Len(SkriptPfad) - Len(WScript.ScriptName)) 'Pfadermittlung
Set objExcel = CreateObject("Excel.Application")
Set objWb = objExcel.Workbooks.Open(SkriptPfad & "Report.xls")'öffnet die angegebene xls
objExcel.Visible = False 'die geöffnete xls ist während dem Import nicht sichtbar
objExcel.Sheets("Datenbasis").Select 'wählt die angegebene Mappe der zuvor geöffneten xls
objExcel.Range("Datenbasis!$1:$65536").ClearContents 'löscht alle Inhalte von angegebener Mappe
'Angabe des Tabellenblattes
Set objSheet = objExcel.ActiveWorkbook.WorkSheets("Datenbasis") 'Import in angegebenes Tabellenblatt
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "MSDASQL"
Conn.Mode = adModeRead
Conn.CursorLocation = adUseClient
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=100.10.19.173;UID=read_user;PWD=geheim;Port=3310;database=kunden_db"
Set RS = CreateObject("ADODB.Recordset")
RS.CursorLocation = adUseClient
'verwendete SQL-Anweisung
RS.Source = "SELECT * from Kundentabelle;"
Set RS.ActiveConnection = Conn
RS.CursorType = adOpenForwardOnly
RS.LockType = adLockReadOnly
RS.Open
Do While Not RS.EOF
'objExcel.StatusBar = x & " Datensätze aus Kundendatenbank importiert" 'Text für Statusbar 'macht nur Sinn bei objExcel.Visible = True
'Die Spalenüberschriften einfügen Bezug aus dem SQL-Statement
If( headerSet = 0 ) Then
For i = 0 to RS.Fields.Count - 1
objSheet.Cells(rowCount, i+1).Value = RS.Fields.Item(i).Name
Next
headerSet = 1
End If
'Die dazugehörigen Werte einfügen
For i = 0 to RS.Fields.Count -1
objSheet.Cells(rowCount+1, i+1).Value = RS.Fields.Item(i).Value
Next
rowCount = rowCount + 1
RS.MoveNext
x = x + 1
Loop
'objExcel.Statusbar = False 'Statusbar bereinigen 'macht nur Sinn bei objExcel.Visible = True
objExcel.Sheets("Kunden").Select 'wählt die angegebene Mappe der zuvor geöffneten xls
objExcel.Cells(12, 5) = Date & " / " & Time & " Uhr"
objExcel.Cells(13, 5) = x & " Datensätze"
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
objExcel.Visible = False
objExcel.ActiveWorkBook.Save
objExcel.Quit
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129559
Url: https://administrator.de/contentid/129559
Ausgedruckt am: 15.11.2024 um 01:11 Uhr
6 Kommentare
Neuester Kommentar
Moin KikiMiki,
wenn TOAD installiert ist, dann gibt es wahrscheinlich auch eine richtig einstellte tnsnames.ora.
Aus dieser kannst du dann die Feinheiten abtippen.
Das grobe Raster für Egal-welchen-Oracle-Zugriff findest du ansonsten auf Connectionstrings.
Grüße
Biber
wenn TOAD installiert ist, dann gibt es wahrscheinlich auch eine richtig einstellte tnsnames.ora.
Aus dieser kannst du dann die Feinheiten abtippen.
Das grobe Raster für Egal-welchen-Oracle-Zugriff findest du ansonsten auf Connectionstrings.
Grüße
Biber
Hallo,
irgendwie check ich das nicht
Kann ich exakt die gleiche Syntax nehmen?
Nur Server, UID, PWD,POrt und databese mit den entsprechenden Werten ersetzten?
Brauch ich keine zusätzlichen Werte, heißt auch alles Gleich z.B. UID oder UserID?
Bei Conn.Provider was muss da stehen wenn es eine Oracle DB ist?
Damit mein Skript über die MySQL überhaupt lief musste ich mysql-connector-odbc-5.1.5-win32.msi installieren
Brauch ich auch was für dei Oracle DB?
irgendwie check ich das nicht
Conn.Provider = "MSDASQL"
Conn.Mode = adModeRead
Conn.CursorLocation = adUseClient
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
"SERVER=100.10.19.173;UID=read_user;PWD=geheim;Port=3310;database=kunden_db"
Kann ich exakt die gleiche Syntax nehmen?
Nur Server, UID, PWD,POrt und databese mit den entsprechenden Werten ersetzten?
Brauch ich keine zusätzlichen Werte, heißt auch alles Gleich z.B. UID oder UserID?
Bei Conn.Provider was muss da stehen wenn es eine Oracle DB ist?
Damit mein Skript über die MySQL überhaupt lief musste ich mysql-connector-odbc-5.1.5-win32.msi installieren
Brauch ich auch was für dei Oracle DB?