cubalaca Geschrieben 29. Januar 2008 Teilen Geschrieben 29. Januar 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 29. Januar 2008 Teilen Geschrieben 29. Januar 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cubalaca Geschrieben 29. Januar 2008 Autor Teilen Geschrieben 29. Januar 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 29. Januar 2008 Teilen Geschrieben 29. Januar 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
cubalaca Geschrieben 29. Januar 2008 Autor Teilen Geschrieben 29. Januar 2008 Danke für deine Hilfe, soweit funktioniert alles bestens! Werde nun eine Tabelle nach der anderen in den code einfügen und testen Nochmals besten Dank! lg Cubalaca Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.