Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Intelligente Tabelle mittels VBA und ADO ansprechen

Intelligente Tabelle mittels VBA und ADO ansprechen
21.04.2024 11:17:47
Piffpaff
Hallo zusammen,

ich möchte gerne, wie oben beschrieben, mittels VBA und ADO auf eine intelligente Tabelle (diese habe ich „tab_rollout“ genannt) in einer anderen Excel Datei zugreifen. Die intelligente Tabelle liegt auf dem Tabellenblatt "Tabelle1".

Hier ist der Code:



Option Explicit

Dim connect As Object ' Verbindung
Dim rst As Object ' Recordset
Dim file As String ' Datei
Dim strConnection As String ' Verbindungszeichenfolge
Dim sql As String ' SQL-Abfrage
Dim tabelle As String ' Tabellenname

Sub query()

' Verbindung herstellen
Call ado_auf_excel_dateien

' Recordset mit Daten füllen
sql = "SELECT Modul_1, Modul_2, Modul_3 FROM [tab_rollout$]"
rst.Open sql, connect

' Daten ausgeben
Do While Not rst.EOF
MsgBox rst(0)
MsgBox rst(1)
MsgBox rst(2)
rst.MoveNext
Loop

rst.Close
End Sub

Sub ado_auf_excel_dateien()
' Dateiname und Pfad
file = "\\Pfad\zur\Netzwerkdatei\Netzwerkdatei.xlsx"

' Verbindungszeichenfolge für Excel-Dateien
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & file & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"""

' Tabellenblattname
tabelle = "Tabelle1"

' Verbindung herstellen
Set connect = CreateObject("ADODB.Connection")
connect.Open strConnection

' Recordset erstellen
Set rst = CreateObject("ADODB.Recordset")
End Sub

Es erscheint der Fehler: "'tab_rollout' ist kein gültiger Name. Stellen Sie sicher, dass der Name nicht zu lang ist und keine ungültigen Zeichen..."

Ich habe bereits den Namen der intelligenten Tabelle überprüft, und er ist definitv richtig. Ich habe ausserdem versucht, über einen benannten Bereich zu gehen. Klappt auch nicht.

Wo bin ich zu blöd?

Vielen Dank für euer Feedback und eure Hilfe...

Grüße

Christoph
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Du musst es so...
21.04.2024 16:50:45
Case
Hallo Christoph, :-)

... ansprechen (getestet): ;-)

sql = "SELECT [Modul_1], [Modul_2], [Modul_3] FROM [Tabelle1$]"


Oder in deinem Beispiel auch so: ;-)

sql = "SELECT [Modul_1], [Modul_2], [Modul_3] FROM [" & tabelle & "$]"""


"Modul_1 bis 3" sind die Überschriften des ListObjects und "Tabelle1" ist der TabellenBLATTname.

Du solltest auch noch nach "rst.Close" ein "connect.Close" einsetzen bzw. besser über eine Fehlerbehandlungsroutine. ;-)

Servus
Case
Anzeige
AW: Du musst es so...
21.04.2024 20:09:17
Piffes
Hallo Case,

vielen Dank für die schnelle Antwort. Deine Lösung (und auch die Erklärung) passt perfekt. Jetzt macht es, was es soll.

P.S.: Ich habe deinen Vorschlag mit Connect.close noch eingebaut.

Viele Grüße
Christoph
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige