Import von Excel-Datei auf mehrere Tabellen verteilen

Moderator: ModerationP

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitragvon SGast » 01. Sep 2021, 07:30

Hallo,
es gibt verschiedene Möglichkeiten für den Excelimport.
Die optimale Variante ist aber, die Exceltabelle zu verknüpfen und dann über eine oder mehrere Abfragen zu importieren.

Du brauchst vermutlich für jede Spalte eine separate Aktualisierungsabfrage.

Das Verknüpfen und der Aufruf der einzelnen Abfragen erfolgt dann per VBA, aber zunächst kann man alles erst mal manuell erstellen/testen. Beim automatisierten Aufruf kannst du dann auch den Stichtag abfragen.

Gruß Steffen
SGast
 

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitragvon BadaPing » 01. Sep 2021, 09:30

Hi Steffen,

Vielen Dank für den Tipp! Ich habe eine Tabelle „Import“ erstellt und dazu entsprechende Anfügeabfragen für jede Spalte, die mir meine Stichtags-Tabelle füllen. Das klappt wunderbar. Ich habe allerdings aus Testzwecken jetzt schon mit einer korrekt befüllten Import-Tabelle gearbeitet. Aufgrund des Ablagesystemen bei uns in der Firma bekomme ich allerdings verknüpfte Tabellen nicht richtig zum Laufen. Ich wäre daher noch für Tipps dankbar, wie ich mit Hilfe von Code die zu importierende Tabelle einfügen und manuell einen Stichtag eingeben kann, der als Spalte übernommen wird.

Viele Grüße
Frederick
BadaPing
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11
Registriert: 31. Aug 2021, 17:06

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitragvon SGast » 01. Sep 2021, 09:49

Hallo,
Aufgrund des Ablagesystemen bei uns in der Firma bekomme ich allerdings verknüpfte Tabellen nicht richtig zum Laufen.
Kopiere die Excelmappe lokal, dann kannst du die Verknüpfung auch gleich fest belassen und musst diese nicht an einen bestimmten Dateinamen anpassen.
Stichtag eingeben: Im einfachsten Fall über eine InputBox, besser aber über ein Formularfeld. Dort kannst du dann auch gleich noch den Befehlsknopf zum Kopieren der mMappe und zum Aufruf der Abfragen unterbringen.

Gruß Steffen
SGast
 

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitragvon Beaker s.a. » 01. Sep 2021, 10:52

Hallo Frederick,
der als Spalte übernommen wird.

Was heisst denn "als Spalte"?
Das ist der Feldwert für das Datumsfeld in der n:m, der für alle Anfügeabfragen
konstant ist (pro Stichtag).

Am Anfang hattest du das Datum als PK, wovon richtigerweise abgeraten wurde.
Wenn du sicherstellen willst, dass es nur einen Import an einem Tag geben darf,
kannst du das Datumsfeld mit einem eindeutigen Index belegen.
ACHTUNG, das funktioniert hier allerdings nur mit einem Mehrfelder-Index in
Zusammenhang mit der Abteilungs_IDF und/oder der Messgroessen_IDF.

gruss ekkehard
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1204
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitragvon BadaPing » 01. Sep 2021, 14:49

Hallo zusammen,

danke für die beiden Rückmeldungen.

Zum Thema Datenstruktur:
Mit als Spalte meinte ich, dass ja jetzt quasi alle Werte in einer Spalte stehen und dann über die MessgrößenID in der Spalte nebendran bestimmt wird, um welche konkrete Messgröße es sich hier handelt. Das Problem habe ich dank Steffens Hinweis mittlerweile gelöst. Bin dort aber auf ein neues Problem gestoßen. Ich möchte in der Tabelle eine Spalte ergänzen, in der ich die Veränderung zur Vorwoche berechne. Der Wert sollte dauerhaft in der Tabelle gespeichert sein, da ich später einen Bericht generiere, in dem u.a. dieser Wert für die letzten Stichtage graphisch dargestellt wird. D.h. eine Abfrage ist hier aus meiner Sicht keine Lösung. Auch eine einfache berechnete Spalte funktioniert nicht, da meine Tabelle jetzt bspw. wie folgt aussieht:
Stichtag KenngrößenID Wert
1.1.21 1 10
1.1.21 2 3
1.1.21 3 8
2.1.21 1 11
2.1.21 2 4
2.1.21 3 7
3.1.21 1 9
usw.

Hat hier jemand eine Idee, wie ich dort eine berechnete Spalte einfüge, die sich immer auf den vorherigen Stichtag für die KenngrößenID (und dann auch nochmal AbteilungsID, die ich im Beispiel nicht enthalten habe) bezieht?

Zum Thema Import:
Wie gesagt ist eine verknüpfte Tabelle aufgrund unserer Datenablagestruktur und verwendeten Systeme nicht möglich, es verreißt jedes Mal die Verknüpfung. Ich habe jetzt mit Hilfe dieses Tutorials: https://www.youtube.com/watch?v=WO7Js1Mh13c eine Import-Funktion gebaut, bei der ich die Datei auswählen kann und sie dann importiert bekomme.
Dabei habe ich noch folgende Probleme.
1. Die importierte Datei wird mir immer als neue Tabelle angelegt. Wie importiere ich diese in eine bestehende Tabelle?
2. Wie ergänze ich ein Inputfeld, so dass in einer bestimmten Spalte immer der Stichtag ergänzt wird?

Mein Code sieht aktuell wie folgt aus:
Import-Modul
Code: Alles auswählen
Public Sub ImportExcelSpreadsheet(FileName As String, tableName As String)
On Error GoTo BadFormat
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, tableName, FileName, True, "A1:F4"
    Exit Sub
   
BadFormat:
    MsgBox "The file you tried to import was not an Excel spreadsheet."

End Sub


Formular-Code
Code: Alles auswählen
Private Sub btnBrowse_Click()
    Dim diag As Office.FileDialog
    Dim item As Variant
   
    Set diag = Application.FileDialog(msoFileDialogFilePicker)
    diag.AllowMultiSelect = False
    diag.Title = "Please select an Excel Spreadsheet"
    diag.Filters.Clear
    diag.Filters.Add "Excel Spreadsheets", "*.xls, *.xlsx"
   
    If diag.Show Then
        For Each item In diag.SelectedItems
            Me.txtFileName = item
        Next
    End If
   

End Sub

Private Sub btnImportSpreadsheet_Click()
    Dim FSO As New FileSystemObject
   
    If Nz(Me.txtFileName, "") = "" Then
        MsgBox "Please select a file!"
        Exit Sub
    End If
   
    If FSO.FileExists(Me.txtFileName) Then
        ExcelImport.ImportExcelSpreadsheet Me.txtFileName, FSO.GetFileName(Me.txtFileName)
    Else
        MsgBox "File not found!"
    End If
End Sub


Über Vorschläge wäre ich dankbar.

Viele Grüße
Frederick
BadaPing
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11
Registriert: 31. Aug 2021, 17:06

Re: Import von Excel-Datei auf mehrere Tabellen verteilen

Beitragvon BadaPing » 02. Sep 2021, 08:58

Hallo zusammen,

Kurzes Update: Ich habe den Fehler in meinem Code gefunden. Die Daten werden jetzt in der richtigen Tabelle importiert. Zusätzlich habe ich jetzt eine Funktion ergänzt, die das Datum aus dem Titel der Datei abgreift und in der entsprechenden Spalte ergänzt.

Über Rückmeldung bzgl der zu berechnenden Spalte wäre ich weiterhin dankbar. Bin überlegen, ob ich dafür ein neues Thema eröffnen soll, da die Frage sich nun ja von dem eigentlichen Thema entfernt hat?

Viele Grüße
Frederick
BadaPing
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 11
Registriert: 31. Aug 2021, 17:06

Vorherige

Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste