MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 06.02.2018, 15:03   #1
Andreas_80
MOF User
MOF User
Standard Acc2016 - Excel Daten in Access Tabelle importieren

Guten Tag,

ich habe mich mit der Suche des Forums beschäftigt.
Hätte ich was gefunden würde ich kein neues Thema öffnen.

Kurz und Knapp:
Access Tabelle : "Master" mit x Spalten
Darauf eine Abfrage mit gewissen Spalten aus der Master-Tabelle
Nun ein Formular.
Aus dem Formular kann ich gewisse Datensätze filtern, sortieren what ever.
Diese Datensätze kann ich auch nach Excel exportieren.

Folgendes will ich nun tun:
Die Exportierte Excel-Datei öffnen, die Datensätze bearbeiten.
Dann aus dem Formular mit einem Import-Button diese geänderte Excel-Datei in die bestehende Master-Tabelle bzw. deren Abfrage importieren. Die noch in der Abfrage bestehend Datensätze die zum ändern exportiert wurden sollten nun durch den import mit den geänderten Datensätzen überschrieben werden.
Damit ich dann im Formular die geänderten Datensätze sehen kann.

ist sicher nicht die beste und elegannteste Lösung aber auf Wunsch meiner Kollegen entstand diese Idee. Import funktioniert nur es wird dann eine neue Tabelle erstellt.

Vielleicht kann mir hier jemand weiterhelfen.
Mfg Andreas
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.02.2018, 15:16   #2
maikek
MOF Guru
MOF Guru
Standard

Moin,
ich weiß ja nicht, wie du importierst ... Mit dem Assistenten kannst du auswählen, ob du in eine neue oder eine bestehende Tabelle importieren willst.
Wenn du geänderte Daten überschreiben willst, würde sich anbieten, die Exceltabelle nach Access zu verknüpfen und dann eine Aktualisierungsabfrage auszuführen.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.02.2018, 15:19   #3
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Oh mist sorry mein Fehler. Soll mit vba ohne Assistenten mit einem Button im Formular importiert werden.
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.02.2018, 16:01   #4
maikek
MOF Guru
MOF Guru
Standard

Zitat:

Import funktioniert nur es wird dann eine neue Tabelle erstellt.

Dann würde mich doch mal interessieren, wie dein VBA-Code dazu aussieht.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 08:31   #5
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Maike,

Hier ist erst mal der Code der bei mir in einem Modul ist.

Code:

Option Compare Database
Option Explicit
 

Public Sub ImportExcelSpreadsheet(fileName As String, tableName As String)
On Error GoTo FalschesFormat
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, tableName, fileName, True
    Exit Sub
    
FalschesFormat:
    MsgBox "Das Dateiformat kann nicht geöffnet werden!"
End Sub


Public Function DateiAuswaehlen()

    Dim objFiledialog As FileDialog

    Set objFiledialog = Application.FileDialog(msoFileDialogOpen)
    With objFiledialog
    .AllowMultiSelect = False
        If .Show = True Then
            DateiAuswaehlen = .SelectedItems(1)
        End If
    
    End With
    
    Set objFiledialog = Nothing

End Function
Dann habe ich im Formular selber zwei Buttons
button1 = Öffnen hiermit wähle ich die zu importierende Datei aus. der Pfad der Datei wird dann in einem Textfeld im Formular angezeigt.
Button2 = Import hier findet dann der Import statt, bin mir an der stelle nicht ganz sicher ob dafür der Pfad aus dem Taextfeld genommen wird.
Code:

Private Sub cmdImport_Click()
    Dim FSO As New FileSystemObject
    
    If Nz(Me.txtfilename, "") = "" Then
        MsgBox "Bitte Datei auswählen!"
        Exit Sub
    End If
    
    If FSO.FileExists(Nz(Me.txtfilename, "")) Then
        ExcelImport.ImportExcelSpreadsheet Me.txtfilename, FSO.GetFileName(Me.txtfilename)
    Else
        MsgBox "Eine Datei mit diesem Namen"
    End If
    
End Sub

Private Sub cmdÖffnen_Click()
    Me.txtfilename = DateiAuswaehlen
End Sub
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 09:07   #6
maikek
MOF Guru
MOF Guru
Standard

Wenn ich das richtig sehe, dann übergibst du hier
Code:

        ExcelImport.ImportExcelSpreadsheet Me.txtfilename, FSO.GetFileName(Me.txtfilename)
der Funktion zwei Mal den Namen des Excelfiles, erwartet wird
Code:

ImportExcelSpreadsheet(fileName As String, tableName As String)
an der zweiten Stelle der Tabellenname.
Wenn du das entsprechend änderst, dürften die Datensätze zumindest in der richtigen Tabelle landen. Allerdings wohl nur angefügt, nicht gegen die vorherigen ausgetauscht.
Wie schon gesagt, ich würde entweder verknüpfen oder in eine vorgeschaltete Tabelle importieren und dann eine Aktualisierungsabfrage verwenden.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 09:12   #7
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Die noch in der Abfrage bestehend Datensätze die zum ändern exportiert wurden sollten nun durch den import mit den geänderten Datensätzen überschrieben werden.

(Auswahl)Abfragen zeigen Daten nur an, eine Speicherung findet in Tabellen statt.

Ansonsten: Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle
Eine externe Tabelle muss dabei nicht zwingend importiert werden, sie kann auch temporär oder dauerhaft in das Access-Frontend verknüpft werden, bei Tabellen des Backends kennt man das ja.
Die Ereignisprozedur im Timer-Event sollte möglichst schlank sein, damit man das Gesamtsystem nicht damit übermäßig belastet.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende

Geändert von ebs17 (07.02.2018 um 09:22 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 10:09   #8
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Maike,

danke für den Tipp. Bin grade dran es zu versuchen.
Aber ich komme nicht weiter.
den Code habe ich gestern über ein Youtube tutorial gefunden und mit abgetippt. Gestern war es noch klar und verständlich, heute ein mysterium. Ich hasse programmieren
warum ich es mache? weil ist muss hahah zum Glück nur dieses eine mal

diese sache mit FSO wurde auch erst nachträglich im tutorial eingefügt damit wird wohl unteranderem geprüft welches Dateiformat in dem Textfeld "txtfilename" steht
Code:

    
If FSO.FileExists(Nz(Me.txtfilename, "")) Then
        ExcelImport.ImportExcelSpreadsheet Me.txtfilename, FSO.GetFileName(Me.txtfilename)
    Else
        MsgBox "Eine Datei mit diesem Namen"
    End If
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 10:12   #9
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Eberhard,

damit werde ich mich wohl erst beschäftigen wenn die Import/Export geschicht läuft. :-(

denn jetzt wie durch zauberhand funktioniert mein Export nicht mehr "kotz"
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 13:42   #10
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Noch mal eine Frage

bei folgendem Code bekomme ich einen Laufzeitfehler 13 mit "Typen unverträglich"
Verstehe einfach nicht was ich da falsch mache. Kommentier ich die Zeile aus alle Dateien in ÖffnenDialog gezeigt. (*.*)

Code:

 diag.Filters.Add "Excel Spreadsheets", "*.xls", "*.xlsx"
desweiteren kann ich zwar die *.xlsx Dateien öffnen und importieren aber bei den *.xls Dateien wird folgende Zeile einfach übersprungen:
Code:

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, tableName, txtfilename, True
Kompletter Code fürs nachvollziehen:
Modul:
Code:

Option Compare Database
Option Explicit
 
Public Sub ImportExcelSpreadsheet(txtfilename As String, tableName As String)
On Error GoTo FalschesFormat
    MsgBox "hallo ich steh hier vorne"

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, tableName, txtfilename, True
    
    MsgBox "hallo ich steh hier hinten"
    Exit Sub

FalschesFormat:
    MsgBox "Das Dateiformat kann nicht importiert werden!"
End Sub
Formular Code:
Code:

Option Compare Database
Option Explicit


Private Sub cmdImport_Click()
    Dim FSO As New FileSystemObject

    If Nz(Me.txtfilename, "") = "" Then
        MsgBox "Bitte Datei öffnen!"
        Exit Sub
    End If

    If FSO.FileExists(Nz(Me.txtfilename, "")) Then
        ExcelImport.ImportExcelSpreadsheet Me.txtfilename, FSO.GetFileName(Me.txtfilename)
    Else
        MsgBox "Eine Datei mit diesem Namen existiert nicht!"
    End If
End Sub


Private Sub cmdÖffnen_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
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 14:28   #11
maikek
MOF Guru
MOF Guru
Standard

Ich glaube, du kannst nur einen Filter zur Zeit anfügen:
Code:

diag.Filters.Add "Excel 2000", "*.xls"
diag.Filters.Add "Excel 2010", "*.xlsx"
Und
Code:

acSpreadsheetTypeExcel9
sollte eigentlich für die .xls Dateien stimmen, für die anderen wäre imho mindestens Excel12 nötig.
Das kannst du vorher prüfen, etwa so (Pseudocode):
Code:

If instr(Dateiname, ".xlsx") > 0 then
   Typ 12
Else
   Typ9
End If
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2018, 08:11   #12
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Maike,

vielen Dank für den Tipp, das werde ich gleich mal testen.
Auf die Idee bin ich gar nicht gekommen. Dache wenn ich acSpreadsheetTypeExcel12 benutze sollte das auch rückkompatibel mit .xls sein.
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2018, 11:51   #13
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Maike,

nach reichlichen Tests und Versuchen habe ich festgestellt das die .xls dateien mit dem Typ "acSpreadsheetTypeExcel12" problemlos importiert werden.

das Problem das ich habe hat einen anderen Ursprung.
Ich habe eine Export-Funktion die mir eine .xls Datei erstellt. Und genau diese Datei lässt sich mit keinem Typen importieren. .xlsx Dateien allerdings schon.
Die Fehlermeldung hier lautet immer: Die Externe Tabelle hat nicht das erwartete Format.

Ich werde jetzt erst mal eine neue Export-Funktion erstellen/Bauen/zusammenkopieren "Lach" und es dann prüfen.
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2018, 12:06   #14
maikek
MOF Guru
MOF Guru
Standard

Zitat:

Ich habe eine Export-Funktion die mir eine .xls Datei erstellt. Und genau diese Datei lässt sich mit keinem Typen importieren. .xlsx Dateien allerdings schon.

Da wäre meine Vermutung, dass die Datei zwar .xls als Extension im Namen hat, in Wirklichkeit aber trotzdem im Format .xlsx erstellt wird.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2018, 12:14   #15
Nouba
MOF Guru
MOF Guru
Standard

Handelt es sich bei dem Versager zufällig üm einen SAP-Report?
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.