Zugriff auf Excel
11.12.2007 16:56:00
Holger
ich habe ein Problem, auf dessen Lösung ich nicht alleine stoße. Auch das
Recherchieren im Internet hat mir nicht geholfen.
Ich habe ein UserForm mit zwei Listenfeldern. Eine Liste wird gefüllt mir
den vorhandenen Tabellen einer vordefinierten Accessdatenbank. Die andere
Liste wird mit den entsprechenden Merkmalen gefüllt. Nun markiert der Nutzer
die gewünschten Tabellen und Merkmale und importiert die entsprechenden
Datensätze. Das funktioniert soweit mit dem unten aufgeführten Code.
Nun möchte ich das jedoch noch in Abhängigkeit einer Datumsbeschränkung
durchführen (VON_DATUM; BIS_DATUM). Ein Merkmal der Tabellen ist das Feld
"herstelldatum" und in Anhängigkeit der Datumsgrenze im UserForm sollen nur
die Merkmale importiert werden, die zustzälich mit dem Eingabedatum gefiltert
wurden.
Kann mir dabei jmd. helfen? Ich bin dort ziemlich ratlos.
Herzlichen Dank für die Hilfe und
schöne Grüße
Holger
Hier der Code -------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
'keine Tabelle ausgewählt ?
If ListBox1.ListIndex = -1 Then
MsgBox "Bitte wählen Sie eine Tabelle!", vbCritical
Exit Sub
End If
'Überschriften setzen (Feldnamen)
Anzahl_Felder = 0
With ListBox2
For i = 0 To .ListCount - 1
If .Selected(i) Then
Anzahl_Felder = Anzahl_Felder + 1
Cells(1, Anzahl_Felder) = .List(i)
With Cells(1, Anzahl_Felder)
.Interior.ColorIndex = 48
.Interior.Pattern = xlSolid
.Font.Bold = True
End With
End If
Next i
End With
If Anzahl_Felder = 0 Then
MsgBox "Bitte wählen Sie mindestens 1 Feld aus!", vbCritical
Exit Sub
End If
'Tabelle zum Einlesen öffnen
Set Datensatz = Datenbank.OpenRecordset(Tabellenname, dbOpenDynaset)
'Anzahl der Datensätze
Anzahl = Datenbank.TableDefs(Tabellenname).RecordCount
z = 2 'ab Zeile 2 Daten schreiben
'alle Datensätze einlesen
Do Until Datensatz.EOF
'Schleife über alle Felder
With ListBox2
'ab Spalte 1 wird geschrieben
s = 1
For X = 0 To .ListCount - 1
If .Selected(X) Then
'Wert ermitteln
n = Datensatz.Fields(X).Value
'Ausgabe in der Tabelle
Cells(z, s) = n
'Spaltennummer um 1 erhöhen
s = s + 1
End If
Next X
End With
'Ausgabezeile um 1 erhöhen
z = z + 1
'nächster Datensatz
Datensatz.MoveNext
Loop
'Datenbank schließen
Datenbank.Close
'Optimale Spaltenbreite
Range(Cells(1, 1), Cells(1, Anzahl_Felder)).EntireColumn.AutoFit
'Information (Anzahl der Datensätze)
MsgBox Anzahl & " Datensätze eingelesen", vbInformation, "Datenbank
importieren"
'Userform schließen
Unload Me
End Sub