Clever-Excel-Forum

Normale Version: Exceltabellen Importieren mit neuer Spalte
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

leider bin ich kein VBA Experte, deswegen komme ich bei meinem Problem nicht weiter.

Ich möchte aus einer Excelmappe mehrere Tabellen in eine Accesstabelle importieren. Dazu habe ich ein Makro:

Code:
Option Compare Database

Sub InportTab()


Dim z As Integer

CurrentDb.Execute ("DELETE * FROM Monat"), dbFailOnError



Const PATH = "C:\Users\Documents\Einkaufscontrolling\Statandartsreport\AV_BE_Analyse\Filialen\"

z = 20
Do While z < 93
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
        "Monat", PATH & "AV_Monat.xlsx", True, "MON_A_" & z & "!"
   
   z = z + 1
   If z = 33 Then z = 92
Loop


End Sub
Leider habe ich beim Import der Daten ein Problem. Wenn die Nummerierung der Tabellenblätter fortlaufend ist, dann funktioniert es. Bei meinen Daten ist das aber nicht der Fall. Es fehlen dazwischen immer Nummern.
Z.B. es geht los mit MON_A_20, MON_A_21 dann fehlt MON_A_22 und es geht weiter mit MON_A_23. Wie könnte man diesen Fehler abfangen, so dass der Code weiter ausgeführt wird??
Außerdem möchte ich beim Import der einzelnen Tabellen, auch den Namen der Tabelle (den Reiternamen) in einer neuen zusätzlich Spalte einfügen. Würde das auch gehen???
Für Eure Hilfe möchte ich mich jetzt schon bedanken!!!
Gruß
Jo
Code:
Option Compare Database

Sub InportTab()

Dim z As Integer
Dim Datei as string

CurrentDb.Execute ("DELETE * FROM Monat"), dbFailOnError
Const PATH = "C:\Users\Documents\Einkaufscontrolling\Statandartsreport\AV_BE_Analyse\Filialen\"
z = 20
Do While z < 93
Datei = PATH & "MON_A_" & z & ".xlsx"
if (DateiExistiert(Datei) = true) then
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Monat", PATH & "AV_Monat.xlsx", True, "MON_A_" & z & "!"
       end if
  z = z + 1
  If z = 33 Then z = 92
Loop
End Sub

Public Function DateiExistiert(ByVal Dateipfad As Variant) As Boolean
  ' Quelle: http://www.dbwiki.net/
  On Error Resume Next
  DateiExistiert = CreateObject("Scripting.FileSystemObject").FileExists(Dateipfad)
End Function

'Du prüfst einfach vorher ab, ob die Datei existiert bevor Sie importiert werden soll. Ich habe das jetzt aus dem Kopf gemacht ohne vorher den Code prüfen zu können.
Hallöchen,

die Prüfung sollte auch mit dem DIR-Befehl funktionieren, im Prinzip

If Dir(Datei)<>"" then

oder

If len(Dir(Datei)) Then
Hallo,

vielen Dank für die Hilfe. Die beiden Vorschläge werde ich heute noch testen!!


Schöne Grüsse

Jo