Zum Inhalt springen

Mehrere Exel Dateien in Acces Importieren


Empfohlene Beiträge

Geschrieben

Hallo Zusammen,

Ich habe nach langer suche, und vielen versuchen leider nirgends ein passender Code für meine Aufgabe gefunden.

Ich hoffe, das ich hier auf hilfe stose ;)

Zu meinem Problem:

Jeweils am Ende vom Monat, werden 15 .xls Files in eine MS-Acces DB Importiert.

Dies wurde bisher Manuell gemacht, und ich gieng wie folgt vor:

Löschen des Tabelleninhaltes aus Tabelle1.

Import des .xls files in die nun lehre Tabelle1.

(dammit die Struktur und die Beziehungen der Tabelle weiterhin bestehen)

Nun möchte ich mit einem VBA Code, der beim Klicken auf ein Button in einem Formular ausgeführt wird, folgende Schritte automatisch ausführen lassen.

Schritt 1: Bei allen bestehenden 15. Tabellen sollen nur die Inhalte gelöscht werden.

Schritt 2: Nun sollen allte 15 Tabellen Importiert und in die lehren Tabellen angefügt werden.

Fals dies nicht möglich ist, könnte ich mir auf vorstellen, das man jeweil mit einem Drop-Down Menu die gewünschte Tabelle auswählen kann.

Ich hoffe jemand kann mir helfen!

Beste Grüsse

Cubalaca

Geschrieben

d.h. aus dem was ich so herauslese hast du noch nie mit office automation zu tun gehabt?

so aus dem gedächtnis heraus:

Dim strPfad As String

strPfad = "X:\deine\datei.xls"

GetObject(strPfad, ...)
oder z.b.
Dim ExcelWorkbook As Excel.Workbook

Dim strPfad As String

strPfad = "X:\deine\datei.xls"

Set ExcelWorkbook = ExcelObjekt.Workbooks.Open(strPfad)

ExcelWorkbook.Worksheets("Tabelle1").Range...

lies dich halt in das excel-objektmodell ein und sieh dir dort die objekthierarchie (workbooks, worksheets, ranges, cells, ...) an.

s'Amstel

Geschrieben

Danke amstelchen für deine Antwort und Hilfe.

Ich habe tatsächlich nicht viel erfahrung mit VBA, aber mir scheint, dass ich mich nicht klar genug ausgedrückt habe.

Ich möchte die Excel dateien in Acces Importieren, und hab mir nun nen Code gebastelt:

Private Sub Befehl38_Click()

Dim dummy As Object

On Error Resume Next

Set dummy = CurrentDb.TableDefs("Tabellenbezeichnung")

On Error GoTo 0

If dummy Is Nothing Then

DoCmd.TransferSpreadsheet acImport, 8, "z_Test", _

"\\SG1005p-V1\SCS-HR-HCO$\0_Intern\Reporting_Swisscom\FastReporting\Ausgabe Auto Excel\cx_0002.xls", True, ""

'wenn Tabelle nicht vorhanden , importiere

'sie von deinem individuellen "zielPfad"

Else

'ansonsten lösche tabelle

DoCmd.DeleteObject acTable, "z_test"

'und importiere neu

DoCmd.TransferSpreadsheet acImport, 8, "Tabelle1", _

"\\SG1005p-V1\SCS-HR-HCO$\0_Intern\Reporting_Swisscom\FastReporting\Ausgabe Auto Excel\cx_0002.xls", True, ""

End If

End Sub

Der Code scheint zu Funktionieren, jedoch möchte ich alle 15 Tabellen Importieren, und mit dem code kann ich ja nur eine.

Edit:

Um die Inhalte zu löschen, habe ich diesen code verwendet:

Private Sub Import_VB_Click()

MsgBox "Sie löschen alle Inhalte der Tabellen! Nur bei Import betätigen!, vbCritical,Löschen der Tabelleninhalte "

CurrentDb().Execute "DELETE FROM cx_0002"""

Kann ich nun einfach weitere Tabellen anfügen? etwa so:

Private Sub Import_VB_Click()

MsgBox "Sie löschen alle Inhalte der Tabellen! Nur bei Import betätigen!, vbCritical,Löschen der Tabelleninhalte "

CurrentDb().Execute "DELETE FROM cx_0002"""

CurrentDb().Execute "DELETE FROM cx_0003"""

CurrentDb().Execute "DELETE FROM cx_0004"""

Danke für die Hilfe.

Lg

Cubalaca

Geschrieben

ich hab das wohl so verstanden, dass du automatisieren und nicht einfach mit TransferSpreadsheet importieren wolltest :upps

du hast doch beim aufruf der funktion

DoCmd.TransferSpreadsheet acImport, 8, "Tabelle1", _
den tabellennamen drinstehen. meinem verständnis nach kannst du hier ja die Nummer der tabelle einsetzen.
DoCmd.TransferSpreadsheet acImport, 8, "Tabelle" & Num, _
oder aber, wenn du 15 *separate* dateien hast, den dateinamen ersetzen:
"cx_000" & Num & ".xls"

natürlich müssten einstellige und zweistellige nummern richtig auf 2 stellen formatiert werden.

s'Amstel

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...