[Access] Access 2007 automatischer Import Excel dateien

Willi_Kaiser

Mitglied
Hallo,

Ich habe mir die SuFu gurchgeschaut so wie google gefragt, aber nichts hat mir bissher geholfen.

Ich möchte ganz einfach einen Knopf in access drücken, dann sollte ein Fenster erscheinen wo ich eine Datei suchen kann und wenn ich sie gefunden habe bestätige ich und diese wird dann in meine Tabelle X in meiner Datenbank eigefügt.
Ganz wichtig ist es das ich die Datei suchen kann und nicht den namen vorher im quelltext angeben muss.

Habe Windows 7 Home Premium.

ich habe bissher das hier:

Dim Auswahl As Long

Auswahl = MsgBox("Wenn Sie JA klicken, wird der aktuelle Tabelleninhalt gelöscht und durch einen aktuellen ersetzt! Bei NEIN wird der Vorgang abgebrochen!", _
vbYesNoCancel + vbQuestion + vbDefaultButton1, "Frage")
Select Case Auswahl
Case vbNo
Cancel = True
Exit Sub

Case vbYes
DoCmd.SetWarnings False
'Tabelle Datendetails
DoCmd.TransferSpreadsheet acImport, 8, _
"CN38", "C:\Datenbank\CN38_TE.xls", True, ""
Beep
MsgBox "Daten erfolgreich eingespielt.", vbInformation, "IMPORT EXCEL"
DoCmd.SetWarnings True

End Select

Mit freundlichen Grüßen
Willii Kaiser
 
Zuletzt bearbeitet:
hey, danke dir für deine schnelle antwort, nur verstehe ich nix von dem was in diesem Link steht. :p
es sollte echt nur etas sehr simples werden, fenster erschein ich wähle eine datei aus und diese wird in eine Tabelle importiert.
 
Ok, zweiter Versuch.

Hier ist ebenfalls beschrieben wie du mit Access eigenen Mitteln (zumindest fast) ein Dialogfenster zum Auswählen einer Datei erstellen kannst.
Gehe das mal Schritt für Schritt durch, dann sollte es auch ohne großes Wissen in VBA zu schaffen sein.

Mal sehen ich muss gleich weg, aber vielleicht reicht mir nacher die Zeit dann mach ich ein Beispiel.

Gruß Thomas
 
So ich habe mir jetzt mal den Code des ersten Links genommen und es klappt damit wunderbar.

Du erstellst in der Datenbank ein neues Modul und fügst folgenden Code einfach ein:

Visual Basic:
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    Flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As Long
End Type

Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_READONLY = &H1
Public Const OFN_HIDEREADONLY = &H4

Public Function DateiOeffnen(Optional Titel, Optional Filter, Optional DefExtension, Optional AktDir) As String
    Dim strDateiname As String
    Dim strDlgTitel As String
    Dim strFilter As String
    Dim strDefExtension As String
    Dim strAktDir As String
    Dim strNull As String
    Dim OpenDlg As OPENFILENAME
    strNull = Chr$(0)
    strDateiname = String$(512, 0)
    If IsMissing(Titel) Then
        strDlgTitel = "Datei öffnen" & strNull
    Else
        strDlgTitel = Titel & strNull
    End If

    If IsMissing(Filter) Then
        strFilter = "Alle Dateien" & strNull & "*.*" & strNull & strNull
    Else
        strFilter = Filter & strNull
    End If

    If IsMissing(DefExtension) Then
        strDefExtension = strNull
    Else
        strDefExtension = DefExtension & strNull
    End If

    If IsMissing(AktDir) Then
        strAktDir = CurDir$ & strNull
    Else
        strAktDir = AktDir & strNull
    End If

    With OpenDlg
        .lStructSize = Len(OpenDlg)
        .hwndOwner = Screen.ActiveForm.Hwnd
        .lpstrFilter = strFilter
        .nFilterIndex = 1
        .lpstrFile = strDateiname
        .nMaxFile = Len(strDateiname)
        .lpstrInitialDir = strAktDir
        .lpstrTitle = strDlgTitel
        .Flags = OFN_FILEMUSTEXIST Or OFN_READONLY
        .lpstrDefExt = strDefExtension

        If GetOpenFileName(OpenDlg) <> 0 Then
            DateiOeffnen = Left$(.lpstrFile, InStr(.lpstrFile, strNull) - 1)
        Else
            DateiOeffnen = ""
        End If
    End With
End Function

Dann erstellst du in deinem Suchformular einen Button und ein Textfeld mit dem Namen "txtDatei" und fügst diesen Code in die Click-Prozedur des Buttons ein:

Visual Basic:
Private Sub deinButton_Click()
'den Text "Alle Dateien" und am Ende die Angabe "*.*" musst du für
'deinen Dateityp anpassen
    Me.txtDatei = DateiOeffnen("Datei öffnen", "Alle Dateien" & Chr$(0) & "*.*")
End Sub

Wenn du das Formular nun öffnest und auf den Button klickst, dann öffnet sich das bekannte "Datei öffnen" Fenster und du kannst eine beliebige Datei auswählen.

Gruß Thomas
 
Hey hat alles wunderbar geklappt ich muss vor dir wieder mal denHut ziehen, warum wird das den in den Tutorial nicht so einfach erklärt ^^

Hätte dennoch ne Frage, wie baue ich den eine abbruchsequenz ein d.h.
der bunutzer drückt auf importieren und kommt auf dieslogfenster, dann will er doch nciht mehr und drückt auf abbrechen. genau jetzt kommt dann ein laufzeit fehler. diesen will ich vermeiden, deswegen soll dann statt den laufzeit fehler eine msgbox kommen mit" abbruch durch benutzer" oder so wie ist der richtige Syntax für sowas
 
Also ich würde enfach in der Click-Prozedur des Buttons prüfen ob ein Dateiname zurückgegeben wird oder nicht.

Visual Basic:
Private Sub deinButton_Click()
    datei$ = DateiOeffnen("Datei öffnen", "Alle Dateien" & Chr$(0) & "*.*")
    If datei$ = "" Then
        MsgBox "Es wurde keine Datei ausgewählt", vbOKOnly, "Fehler beim Öffnen"
    Else
        Me.txtDatei = datei$
    End If
End Sub
 
Zuletzt bearbeitet:
Hey ich bins mal wieder, ich habe nun das Programm als Access 2003 abgespeichert, da derjenige der es benutzt nur Access 2003 besitzt. Nun kommt es immer zu einem Fehler den ich gleich noch ein mal posten werde, habe den nicht im Kopf. Vielleicht kannst du aber auch ohne die Beschreibung damit etwas anfangen.

Mit freudlichen Grüßen
Willi
 

Neue Beiträge

Zurück