Registriert seit: 22.07.2021
	
Version(en): Excel 365
	
 
	
		
		
		08.11.2022, 19:47 
(Dieser Beitrag wurde zuletzt bearbeitet: 08.11.2022, 19:48 von el-rettev.)
		
	 
	
		Hallo zusammen,
ich habe einen VBA-Code, den ich gerne anpassen möchte.
Er zieht Daten aus einer geschlossenen Datei.
Der Tabellenblattname aus dem die Daten gezogen werden ist hier hart mit [Tabelle1$] hinterlegt.
Code:
Query = "SELECT * FROM [Tabelle1$] Where Produkt = 'Tisch'"
Kann mir jemand helfen wie ich dem Code umschreibe, sodass die Daten aus dem zweiten Tabellenblatt gezogen werden. 
Vergleichbar mit Befehl 
sheets(2)Vielen Dank.
Code:
Sub ADO()
'Variablen deklarieren
Dim Connection As New ADODB.Connection
Dim Query As String
Dim rs As New ADODB.Recordset
'Connection herstellen
'HDR= Header Wenn Yes dann werden Header erwartet
Connection.Open "Provider=MSDASQL.1;DSN=Excel Files;DBQ=Dateipfad;HDR=Yes';"
'Query definieren und ausführen
'Als SQL Code definiert
Query = "SELECT * FROM [Tabelle1$] Where Produkt = 'Tisch'"
rs.Open Query, Connection
'DAten ins Tabellenblatt laden
ActiveSheet.Range("A2").CopyFromRecordset rs
'Connection schliessen
Connection.Close
End Sub
 
 
	
	
	
		
	Registriert seit: 10.04.2014
	
Version(en): 97-2019 (32) + 365 (64)
	
 
	
	
		Hallöchgen,
mit [Tabelle2$] funktioniert es nicht?
	
	
	
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
	
	
 
 
	
	
	
		
	Registriert seit: 26.09.2022
	
Version(en): 2019
	
 
	
		
		
		09.11.2022, 15:09 
(Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2022, 15:09 von derHoepp.)
		
	 
	
		Hallo,
Du kannst die Tabellennamen mit der .OpenSchema-Methode des Connection Objekts auslesen:
Code:
Set rs = con.OpenSchema(20)
rs.MoveFirst
Do While Not rs.EOF
   Debug.Print rs.Fields("TABLE_NAME").Value
Loop
Die 20 steht dabei für die Konstante adSchemaTables
Viele Grüße
derHoepp
	
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28
	  • el-rettev
 
	Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28
	  • el-rettev
 
 
 
	
	
	
		
	Registriert seit: 29.09.2015
	
Version(en): 2030,5
	
 
	
		
		
		09.11.2022, 16:31 
(Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2022, 16:44 von snb.)
		
	 
	
		@derH
Schöne Code.
Leider eine Endlosschleife.
Ich habe 
hinzugefügt.
Aber, so geht's auch:
Code:
Sub M_snb()
   c00 = "G:\OF\Beispiel.xlsb"
   c00 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & c00 & ";Extended Properties=""Excel 12.0"""
   With CreateObject("ADODB.recordset")
      .activeconnection = c00
      MsgBox Join(Filter(Split(.activeconnection.openschema(20).GetString, vbTab), "$"), vbLf)
   End With
End Sub
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 2 Nutzer sagen Danke an snb für diesen Beitrag:2 Nutzer sagen Danke an snb für diesen Beitrag 28
	  • el-rettev, derHoepp
 
	Folgende(r) 2 Nutzer sagen Danke an snb für diesen Beitrag:2 Nutzer sagen Danke an snb für diesen Beitrag 28
	  • el-rettev, derHoepp
 
 
 
	
	
	
		
	Registriert seit: 22.07.2021
	
Version(en): Excel 365
	
 
	
		
		
		10.11.2022, 18:28 
(Dieser Beitrag wurde zuletzt bearbeitet: 10.11.2022, 18:30 von el-rettev.)
		
	 
	
		Hallo.
Vielen Dank für eure Antworten.
Bitte greift mir nochmal unter die Arme:
Der Code liest die Tabellenblätter aus. Aber letztendlich benötige ich sie nicht angezeigt, sondern will immer automatisch das zweite Tabellenblatt in der Datei ansprechen.
Vllt noch zur Erklärung zur Datei die ausgelesen wird:
Das erste Tabellenblatt ist ein Infoblatt, daher nicht relevant. Das zweite Tabellenblatt ist das aktuelle Projekt.
Wird ein neues Projekt hinzugefügt, dann wird ein neues Tabellenblatt in der Quelldatei angelegt und das Blatt wird direkt nach dem Infoblatt geschoben und ist daher immer an zweiter Stelle.
Der Name variiert je nach Projektname, aber die Position nicht.
Daher will ich fix das zweite Tabellenblatt ansprechen.
Wie kann ich das nun mit der Code-Erweiterung, der die Daten ausliest in meinen Code einbinden?
Nochmal vielen Dank.
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 29.09.2015
	
Version(en): 2030,5
	
 
	
	
		Code:
Sub M_snb()
   c00 = "G:\OF\Beispiel.xlsb"
   c00 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & c00 & ";Extended Properties=""Excel 12.0"""
   With CreateObject("ADODB.recordset")
      .activeconnection = c00
      MsgBox Filter(Split(.activeconnection.openschema(20).GetString, vbTab), "$")(1)
   End With
End Sub
 
	
	
	
	
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
	  • el-rettev
 
	Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
	  • el-rettev
 
 
 
	
	
	
		
	Registriert seit: 26.09.2022
	
Version(en): 2019
	
 
	
	
		Hallo,
ich würde mich beim Schema nicht darauf verlassen, dass die Position des Arbeitsblattes in der Arbeitsmappe auch der Position im Recordset entspricht.
Viele Grüße!
derHöpp
	
	
	
	
	
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28
	  • el-rettev
 
	Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28
	  • el-rettev