Hallo zusammen,
ich möchte Daten aus geschlossenen Excel-Dateien herauslesen, ohne dass diese geöffnet werden.
Mit ADODB ist dies meines Erachtens nach möglich. Mit der Excel-Datei Personal.xlsx funktioniert alles super.
Wenn ich die Excel-Datei MOTOREN.xlsx nehme, kann ich zwar die Userform initialisieren und die Werte stehen in der Combobox, aber bei einem Auswahlwechsel in der Combobox stürzt mein Programm bei RST.Open ab.
Ich weiß, der Fehler ist vor dem Computer. Für Anregungen und Hilfen bin ich sehr dankbar. Die Excel-Datein konnte ich leider nirgends hinterlegen.
Private Sub ComboBox1_Change()
'Variable dekalrieren
Dim Rst As ADODB.Recordset
Dim Con As ADODB.Connection
Dim strSQL As String
Dim strPath As String
Set Con = New Connection
Set Rst = New Recordset
' 'Dateipfad für Quelldatei
' strPath = ThisWorkbook.Path & "\MOTOREN.xlsx"
' 'SQL-Abfrage
' strSQL = "SELECT * FROM [230-D-D-MOT$] WHERE [Art-Nr]=" & Me.ComboBox1.Text & " ORDER BY [Art-Nr]"
'Dateipfad für Quelldatei
strPath = ThisWorkbook.Path & "\Personal.xlsx"
'SQL-Abfrage
strSQL = "SELECT * FROM [Tabelle1$] WHERE [Personal-Nr]=" & Me.ComboBox1.Text & " ORDER BY [Personal-Nr]"
'Verbindung zur Arbeitsmappe herstellen
Con.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";ReadOnly=1"
Rst.LockType = adLockOptimistic
Rst.Open strSQL, Con
If Not Rst.EOF Then
Me.TextBox1.Value = Me.ComboBox1.Value
' Me.TextBox2.Value = Rst.Fields("Name")
' Me.TextBox3.Value = Rst.Fields("Vorname")
' Me.TextBox4.Value = Rst.Fields("Abteilung")
End If
Rst.Close
Con.Close
Set Rst = Nothing
Set Con = Nothing
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
'Variable dekalrieren
Dim Rst As ADODB.Recordset
Dim Con As ADODB.Connection
Dim strSQL As String
Dim strPath As String
Set Con = New Connection
Set Rst = New Recordset
' 'Dateipfad für Quelldatei
' strPath = ThisWorkbook.Path & "\MOTOREN.xlsx"
' 'SQL-Abfrage
' strSQL = "SELECT DISTINCT [Art-Nr] FROM [230-D-D-MOT$] ORDER BY [Art-Nr]"
'Dateipfad für Quelldatei
strPath = ThisWorkbook.Path & "\Personal.xlsx"
'SQL-Abfrage
strSQL = "SELECT DISTINCT [Personal-Nr] FROM [Tabelle1$] ORDER BY [Personal-Nr]"
Con.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strPath & ";ReadOnly=1"
Rst.LockType = adLockOptimistic
Rst.Open strSQL, Con
If Not Rst.EOF Then
Me.ComboBox1.List = Application.Transpose(Rst.GetRows)
End If
Rst.Close
Con.Close
Set Rst = Nothing
Set Con = Nothing
End Sub
|