Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1548to1552
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aufruf über ADO

Aufruf über ADO
09.04.2017 15:02:24
Meltinpot
Hallo und schönen Sonntag zusammen,
ich stehe gerade völlig auf dem Schlauch. Ich will per Recordset Daten aus einer geschlossenen Arbeitsmappe laden. Eigentlich habe ich nur die Pfade und Bezeichner aus meiner Vorlage angepasst, aber es kommt dennoch zu folgendem Fehler, sobald das Recordset geöffnet werden soll:
Laufzeitfehler '-2147217904 (80040e10)':
Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.
Mein Code sieht wie folgt aus:
Private Sub GetData()
Dim oAdoConnection As Object
Dim oAdoRecordset As Object
Dim sAdoConnectString As String
Dim sPfad As String
Dim sQuery As String
Dim oZielStartRange As Range
'Datenziel definieren
Set oZielStartRange = ThisWorkbook.Worksheets(1).Range("B2")
'Quellpfad definieren
sPfad = "J:\Entwicklung\60_Projects\99 System\Taktablauf\TA_Verknüpfungen.xlsx"
'ADO Initialisieren
'Late Binding
Set oAdoConnection = CreateObject("ADODB.CONNECTION")
sAdoConnectString = "Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties='Excel 12.0 Xml; _
_
HDR=NO';Data Source=" & sPfad
oAdoConnection.Open sAdoConnectString
'Definieren der Daten, welche kopiert werden sollen. In diesem Fall immer der komplette  _
Datensatz
Set oAdoRecordset = CreateObject("ADODB.RECORDSET")
sQuery = "SELECT [Schrittbezeichnung_2_DE],[Schrittbezeichnung_3_DE] FROM [Bezeichnungen$]   _
_
WHERE Schrittbezeichnung_2_DE = 'Kabel'"
With oAdoRecordset
.Source = sQuery
.ActiveConnection = oAdoConnection
.Open 'Hier taucht die Fehlermeldung auf
Call AusgabePerCopyFromRecordset(oAdoRecordset, oZielStartRange)
End With
With Application
.Goto (ThisWorkbook.Worksheets(i).Range("A1")), True
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.DisplayAlerts = True
End With
oAdoRecordset.Close
oAdoConnection.Close
Set oAdoRecordset = Nothing
Set oAdoConnection = Nothing
End Sub
Public Sub AusgabePerCopyFromRecordset(DasRecordSet As Object, _
StartAusgabe As Range)
' Peter Haserodt 2007
StartAusgabe.CurrentRegion.Clear
StartAusgabe.CopyFromRecordset DasRecordSet
End Sub

Danke für eure Hilfe und nen Gruss

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufruf über ADO
09.04.2017 17:00:01
Hajo_Zi
für Zugriff auf geschlossene Datei, poste ich immer folgenden Code.
Option Explicit
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
Dim strQuelle       As String
Dim Zeilen          As Long
Dim Spalten         As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from  _
closed Workbook"
GetDataClosedWB = False
End Function
Public Sub HoleDaten()
' Die Funktion arbeitet mit der obrigen GetDataClosedWB zusammen
Dim Pfad            As String
Dim Dateiname       As String
Dim Blatt           As String
Dim Bereich         As String
Dim Ziel            As Range
Pfad = "L:\Eigene Dateien\Hajo\Internet\Test\2009\"
Dateiname = "Beispiel Forum 30.xlsm" ' aus welcher Datei soll er holen?
Blatt = "Tabelle1"  ' von welcher Tabelle soll er holen?
Bereich = "A1:B9"   ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.Range("A1")  ' in welchen Bereich soll er kopieren? Genauer gesagt:  _
Bei welcher Zelle soll er anfangen, Datein reinzukopieren? Bsp: ActiveCell geht auch
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige