PDA

Vollständige Version anzeigen : Daten aus einer excel Tabelle importieren


fleedwood
01.10.2002, 19:45
Hi,

habe das Prob das ich gerne aus einer xls Tabelle gezielt Daten importieren möchte.

Beispielsweise sind die Zeile a, b, c bis zur Spalte 20 jeweils mit Faten belegt und ich möchte gezielt die Daten aus b8, c7 und a1 importieren.

Wie kann ich das machen? Gibt es einen einfachen Befehl an den ich nicht gedacht habe oder ist das nur mit sql zu lösen??

Vielen herzlichen Dank für die Hilfe


Karsten

MarioR
02.10.2002, 08:16
Hallo Karsten,

vielleicht hilft Dir Folgendes schon weiter:


Wenn Excel geöffnet, die richtige Datei geladen und das richtige Blatt eingestellt ist, dann kannst Du so auf die Excel-Daten zugreifen:
Dim objExcel As Object

Set objExcel = GetObject(, "Excel.Application")
With objExcel
Me.Textfeld1 = .Range("A1")
Me.Textfeld2 = .Range("B2")
Me.Textfeld3 = .Range("C3")
End With
Set objExcel = Nothing

kso
25.01.2009, 18:45
Hallo Karsten,
anbei der Code für einen vollständigen Ablauf, mit erweiterter Funktionalität:

Private Sub ExcelImport_Click()
On Error GoTo Err_ExcelImport_Click

'Diese Subroutine liest gezielt die Inhalte von verschiedenen Zellen, eines definierten Arbeitsblattes "SheetName"
'von der im Dateiauswahldialog vorgegebenen Exceldatei "strSource", in die Zielfelder der Accesstabelle "TargetDB" ein.
'Beachte unter "Extras - Verweise" die Excel-Library einzubinden!
'Optional kann der Einlesevorgang, in Abhängigkeit des Feldinhalts der Datenquelle, gestoppt werden.

Dim wb_exceldatei As Workbook
Dim ws_arbeitsblatt As Worksheet
Dim rs As Recordset
Dim ExcelObj As Excel.Application 'Deklaration der Objektvariablen
Dim strSource As String
Set ExcelObj = CreateObject("Excel.Application") 'erzeugen einer Objektinstanz
strSource = ExcelObj.GetOpenFilename("Microsoft Office Excel-Dateien (*.xls), *.xls") 'Dateiauswahldialog

Const strSheetName$ = "SheetName" 'Blattname der Excel-Quelle
Const strCell01$ = "A7" 'Feldauswahl des einzulesenden Excel Feldes "A7"
Const strCell02$ = "N3" 'Feldauswahl des einzulesenden Excel Feldes "N3"
Const strCell03$ = "Z9" 'Feldauswahl des einzulesenden Excel Feldes "Z9"
Const strTargetDB$ = "TargetTab" 'Name der Zieltabelle in Access

Set rs = CurrentDb.OpenRecordset(strTargetDB$)
Set wb_exceldatei = Workbooks.Open(strSource, , True) 'übernehmen des Dateinamens aus Dateiauswahldialog (GetOpenFilename)
Set ws_arbeitsblatt = wb_exceldatei.Sheets(strSheetName$) 'zuweisen des Blattnamens

If ws_arbeitsblatt.Range(strCell02$) <> "check" Then 'Abbruch des Einlesevorgangs bei bestimmtem Feldinhalt(optional)
GoTo Err_Aktion_falsch 'Verarbeitung stoppen
End If

With rs
.AddNew 'neuer Datensatz
!Feld_1 = ws_arbeitsblatt.Range(strCell01$) 'Feld_1 Inhalt von strCell01$ (hier: Excel Zelle A7) zuweisen
!Feld_2 = ws_arbeitsblatt.Range(strCell02$) 'Feld_2 Inhalt von strCell02$ (hier: Excel Zelle N3) zuweisen
!Feld_3 = ws_arbeitsblatt.Range(strCell03$) 'Feld_3 Inhalt von strCell03$ (hier: Excel Zelle Z9) zuweisen
.Update
MsgBox "Datensatz ist eingelesen worden.", vbInformation, "Einlesen erfolgreich"
End With

Exit_ExcelImport_Click:
rs.Close 'explizites Auflösen lokaler Objekt-Referenzen vor dem Verlassen einer Prozedur
Set rs = Nothing
Set ExcelObj = Nothing 'Objekt schließen und Objektvariable freigeben
Exit Sub

Err_Aktion_falsch:
MsgBox "Prüfe Inhalt Zelle N3. Datensatz nicht eingelesen.", vbExclamation, "Fehler"
Resume Exit_ExcelImport_Click

Err_ExcelImport_Click:
MsgBox "Fehler. Datensatz nicht eingelesen", vbCritical, "Abbruch"
Resume Exit_ExcelImport_Click

End Sub

Gruß kso