19.09.2019, 08:21
Guten Morgen,
ich habe vor ein Makro zu erstellen dass bei Ausführung eine SQL Abfrage durchführt (Daten ->Daten Abrufen -> aus SQL Datenbank).
Diese soll dann einfach das Leere Arbeitsblatt eingefügt werden.
So nun funktioniert alles wunderbar nur die Abfrage selbst nicht, da ich mich bei SQL fast nicht auskenne habe ich den Abruf über einen "SQL Abruf Ersteller" angefertigt.
Wenn ich diesen aber in meinen String einfüge und durchlaufen lasse bekomme ich immer wieder den Fehler.
""Der Import D1.dbo.DV_FE_URLAUB" entspricht keinem Export. Dies ist möglicherweise auf einem fehlenden Modulverweis zurückzuführen"
So sieht mein Code aus:
Sub SQL()
Dim sqlabfrage As String
sqlabfrage = "Select dvk.ANF_TERMIN , dvk.D2_FRUEHESTER_TERMIN, dvk.END_TERMIN, dvk.ORT, dvk.ORG_TERMIN, dvk.ANZAHL, dvk.WUNSCH_TERMIN, FROM D1.dbo.DV_FE_URLAUB dvk"
ActiveWorkbook.Queries.Add Name:="D1", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Sql.Databases(""111.11.111.111"")," & Chr(13) & "" & Chr(10) & " M1 = Quelle{[Name=""D1""]}[Data]" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " M1"
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=D1;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = sqlabfrage
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "_D1"
.Refresh BackgroundQuery:=False
End With
End Sub
Ich denke dass es an dem Format des Abruf Befehls liegt leider kann ich mir da nicht selber weiterhelfen und habe bereits dass halbe Internet durchforstet, was ich jedoch herausgefunden habe mit "Select * FROM [D1]" funktioniert alles wie gewollt nur dass ich halt nicht die Werte bekomme die ich brauche.
Hoffe mir kann da jemand weiterhelfen.
Danke Schonmal,
Gruß,
Thomas
ich habe vor ein Makro zu erstellen dass bei Ausführung eine SQL Abfrage durchführt (Daten ->Daten Abrufen -> aus SQL Datenbank).
Diese soll dann einfach das Leere Arbeitsblatt eingefügt werden.
So nun funktioniert alles wunderbar nur die Abfrage selbst nicht, da ich mich bei SQL fast nicht auskenne habe ich den Abruf über einen "SQL Abruf Ersteller" angefertigt.
Wenn ich diesen aber in meinen String einfüge und durchlaufen lasse bekomme ich immer wieder den Fehler.
""Der Import D1.dbo.DV_FE_URLAUB" entspricht keinem Export. Dies ist möglicherweise auf einem fehlenden Modulverweis zurückzuführen"
So sieht mein Code aus:
Sub SQL()
Dim sqlabfrage As String
sqlabfrage = "Select dvk.ANF_TERMIN , dvk.D2_FRUEHESTER_TERMIN, dvk.END_TERMIN, dvk.ORT, dvk.ORG_TERMIN, dvk.ANZAHL, dvk.WUNSCH_TERMIN, FROM D1.dbo.DV_FE_URLAUB dvk"
ActiveWorkbook.Queries.Add Name:="D1", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Sql.Databases(""111.11.111.111"")," & Chr(13) & "" & Chr(10) & " M1 = Quelle{[Name=""D1""]}[Data]" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " M1"
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=D1;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = sqlabfrage
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "_D1"
.Refresh BackgroundQuery:=False
End With
End Sub
Ich denke dass es an dem Format des Abruf Befehls liegt leider kann ich mir da nicht selber weiterhelfen und habe bereits dass halbe Internet durchforstet, was ich jedoch herausgefunden habe mit "Select * FROM [D1]" funktioniert alles wie gewollt nur dass ich halt nicht die Werte bekomme die ich brauche.
Hoffe mir kann da jemand weiterhelfen.
Danke Schonmal,
Gruß,
Thomas