Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Exceltabellen Importieren mit neuer Spalte
#1
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
Antworten Top
#2
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.
---           Seid nett und helft einander :100:           ---
---   denn die Liebe ist die größte Kraft im Universum    ---
- Lest die Werke von Jakob Lorber und Gottfried Mayerhofer -
Antworten Top
#3
Hallöchen,

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

If Dir(Datei)<>"" then

oder

If len(Dir(Datei)) Then
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hallo,

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


Schöne Grüsse

Jo
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste