Excel to Access (VBA)



Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Excel to Access (VBA)
von: Bernd
Geschrieben am: 15.05.2002 - 23:32:30

Hallo!

Ich möchte eine variable Anzahl von Excel-Tabellen, die sich alle in einem Verzeichnis (C:\Test\ ....) befinden und die jeweils 5 Arbeitsblätter enthalten automatisch in eine Access-Datenbank (eine große Tabelle) einlesen. Das Einlesen aller Tabellen und Arbeitsblätter soll auf Knopfdruck möglich sein. Zu jedem Datensatz aus den Einlesetabellen soll in der Access-Datenbank der Name der Einlesetabelle und der Name des jeweiligen Arbeitsblattes gespeichert werden. An die Access-Datenbank müßten in regelmäßigen Abständen weitere Excel-Tabellen inkl. der Arbeitsblätter angefügt werden können. Gibt es hierfür eine VBA-Lösung?

Bsp.:
Einzulesende Tabellen:
C:\Test\LKI.xls (BlattA, BlattB, BlattC, BlattD, BlattE)
C:\Test\YTJ.xls (BlattA, BlattB, BlattC, BlattD, BlattE)
C:\Test\UTG.xls (BlattA, BlattB, BlattC, BlattD, BlattE)

Die Spalten der Arbeitsblätter sind immer identisch aufgebaut (Spalte A, Spalte B). Lediglich die Anzahl der Zeilen ist variabel.

nach oben   nach unten

Re: Excel to Access (VBA)
von: MRR
Geschrieben am: 16.05.2002 - 06:15:41

Da habe ich noch ein paar Fragen...
Soll das von Excel aus geschehen? Oder aus Access heraus per Programm?
Welche Informationen sollen eingelesen werden? Nur die Namen der Mappen und Blätter in die Access-Tabelle1? Oder die Daten aus den Excel-Tabellen in Access-Tabelle2? Oder gar die Daten sowie für jeden Datensatz die Mappen- und Sheet-Info? Oder willst Du die Infos nach Access so bringen, dass in der Zieltabelle neben den Inhalten der Sheets in einer weiteren Spalte ein Verweis auf ein mit einem Primärschlüssel versehenes Feld einer anderen Tabelle der Zugriff auf diese Weise auf die sekundär aufgenommenen Mappen- und Sheet-Infos erfolgt?

MS Excel von MRR an Bernd
 ABC
1SpalteASpalteBOriginal
21233451
34355458541
44383441
53233442
643466562
7und_in_anderer_Tabelle  
8NummerMappeSheet
91C:\Test\LKI.xlsBlattA
101C:\Test\LKI.xlsBlattB
111C:\Test\LKI.xlsBlattC
121C:\Test\LKI.xlsBlattD
132C:\Test\YTJ.xlsBlattA
142C:\Test\YTJ.xlsBlattB
152C:\Test\YTJ.xlsBlattC
162C:\Test\YTJ.xlsBlattD

Ich kann mich leider erst wieder gegen Abend melden.
Matthias

nach oben   nach unten

Re: Excel to Access (VBA)
von: Bernd
Geschrieben am: 16.05.2002 - 07:08:00

Hallo Matthias,

danke für Deine schnelle Antwort. Ich möchte die Excel-Tabellen aus Access heraus per Programm in die Access-Datenbank einlesen. Nachdem Einlesevorgang sollen in der Access-Datenbank die Daten und zu jedem Datensatz die Mappen- und Sheet-Infos gespeichert werden.

Bsp.: Zieltabelle
Mappe Sheet SpalteA SpalteB
LKI BlattA 123 345
LKI BlattA 43554 5854
LKI BlattA 438 344
LKI BlattB 56 4546
LKI BlattB 8888 654654
LKI BlattC 555 454
LKI BlattC 4545 78787
LKI BlattC 7875 889
LKI BlattD kkfj aad
LKI BlattE 54 kdjk
YTJ BlattA zuu 9898
YTJ BlattA dd dal
YTJ BlattB llkj lkjll
YTJ BlattB ooeoo lk
YTJ BlattC dkdk diiii
YTJ BlattC lkjl lkjlj
YTJ BlattC dkdkdk dkdk
YTJ BlattD oeoeo oeoeo
YTJ BlattE iidii didi

Gruß
Bernd

nach oben   nach unten

Re: Excel to Access (VBA)
von: MRR
Geschrieben am: 17.05.2002 - 06:46:55

Hi Bernd,
hier ein Vorschlag. Setze vorher noch die Verweise auf Excel und DAO, dann sollte es funktionieren. Ich gehe davon aus, dass
1. die Dateien im Bsp. auf C:\Test liegen (ggf. ändern)
2. Jede Liste 4 Spalten hat.
3. Die erste Zeile Überschriften enthält


Dim exApp As Excel.Application
Dim Datei As String
Dim wb As Workbook
Dim ws As Worksheet
Dim Zelle As Range
Dim rs As DAO.Recordset
Dim As Long
Dim Pfad As String
Dim Dateiname As String, Blattname As String
Set rs = CurrentDb.OpenRecordset("test", dbOpenTable)
Set exApp = CreateObject("Excel.Application")
Pfad = "C:\test\"
Datei = Dir(Pfad & "*.xls")
Do While Datei <> ""
  Set wb = exApp.Workbooks.Open(Pfad & Datei)
  Dateiname = wb.Name
  For Each ws In wb.Worksheets
    Blattname = ws.Name
    i = 2 'Startzeile, sofern in Zeile 1 Überschriften stehen
    Do While ws.Cells(i, 1) <> ""
      With rs
        .AddNew
        .Fields(0) = Dateiname
        .Fields(1) = Blattname
        .Fields(2) = ws.Cells(i, 1)
        .Fields(3) = ws.Cells(i, 2)
        .Fields(4) = ws.Cells(i, 3)
        .Fields(5) = ws.Cells(i, 4)
        .Update
      End With
      i = i + 1
    Loop
  Next
  wb.Close False
  Datei = Dir()
Loop
exApp.Quit

HTH, Matthias
nach oben   nach unten

Re: Excel to Access (VBA)
von: Bernd
Geschrieben am: 17.05.2002 - 12:54:41

Hallo Matthias,

Deine Lösung hat prima geklappt. Vielen, vielen Dank!!!

Gruß
Bernd


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Excel to Access (VBA)"