Registriert seit: 12.10.2016
Version(en): 2013
Hallo zusammen,
wenn ich Templates erstelle, habe ich leider oft viel zu viele Daten.
Ich möchte eine Lösung finden, mit der ich meine WHERE Bedingung über eine Excelzelle füttern kann.
Hier ein Beispiel:
Ich spreche den Datenbankserver meines ERP Systems an
SELECT
Artikelnummer, BestellteMenge
FROM Artikel
WHERE Lieferantennummer = "OPERATOR" (z.B. Zeile G4 Sheet 1)
Sodass ich vor der Abfrage definieren kann, welche Artikel ich abfragen möchte.
Ich habe bereits verschiedene Wege ausprobiert, einen Operator in die Query einzubauen, allerdings bislang ohne Erfolg.
Viele Grüße und Danke für die Antworten.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
WHERE Lieferantennummer = Sheets("Sheet 1").Range("G4").Value
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Manu
Registriert seit: 12.10.2016
Version(en): 2013
Hey Uwe,
wenn ich dies probiere, bekomme ich die Meldung
"Verbindung nicht möglich"
Details: "Microsoft SQL: 'Sheets' is not a recognized built-in function name."
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Manu,
Du musst das halt verketten in der Art:
"WHERE Lieferantennummer = " & Chr(34) & Sheets("Sheet 1").Range("G4").Value & Chr(34) & ""
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Manu
Registriert seit: 12.10.2016
Version(en): 2013
Hey,
das klappt nicht..
Ich spreche aber auch den Server direkt an.
Also ich gehe auf Daten -> Daten Abrufen -> Aus Datenbank -> Aus SQL Server-Datenbank und schreibe dort die SQL-Anweisung rein.
Ich glaube, für die von euch beschriebenen Arten müsste ich es dann irgendwie in VBA eingeben, oder?
Viele Grüße
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
ja, so ist es. Einen Einstieg in die Syntax findest Du z.B. dort:
ADO und Excelbzw. Du googelst gleich nach Excel und sqlServer
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Manu
Registriert seit: 12.10.2016
Version(en): 2013
Hey,
danke für den Link.
Aber ich checks nicht....
Hast du vielleicht einen VBA Code, den ich umschreiben kann?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
auf der verlinkten Seite und den folgenden stehen aber etliche Codes zum umschreiben
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Manu
Registriert seit: 12.10.2016
Version(en): 2013
Code:
Sub Makro1()
'
' Makro1 Makro
'
'
ActiveWorkbook.Queries.Add Name:="Abfrage1", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Sql.Database(""MYDATABASE"", ""MYCOMPANY"", [Query=""SELECT ITEMCODE FROM OITM WHERE CARDCODE = '7070000'""])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " Quelle"
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Abfrage1;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Abfrage1]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Abfrage1"
.Refresh BackgroundQuery:=False
End With
End Sub
Hey

Ja, aber ich weiß nicht an welcher Stelle ich da was umschreiben müsste...
Also ich habe jetzt ein Makro aufgezeichnet um einen VBA Code zu bekommen,
wie kann ich hier mein WHERE (Lieferantennummer) flexibel gestalten?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
Code:
Sub Makro1()
'
' Makro1 Makro
'
'
ActiveWorkbook.Queries.Add Name:="Abfrage1", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Sql.Database(""MYDATABASE"", ""MYCOMPANY"", [Query=""SELECT ITEMCODE FROM OITM WHERE CARDCODE = '" & Sheets("Sheet 1").Range("G4").Value & "'""])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " Quelle"
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Abfrage1;Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Abfrage1]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Abfrage1"
.Refresh BackgroundQuery:=False
End With
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Manu