1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Daten von versch. Excel im Access importieren

Discussion in 'Office-Programme' started by prissy, Nov 7, 2007.

Thread Status:
Not open for further replies.
  1. prissy

    prissy Byte

    Sali zusammen,

    Ich habe folgendes Problem: ich habe im Access ein Formular gemacht mit vers. Buttons. ich möchte wenn ich der Button "import" klicken das Daten von vers. Excel-Dateien nach Access im eine Tabelle importiert wird.
    Ich habe nicht so viel ahnung vo VBA also wäre ich sehr dankbar wenn ihr mir die genau Code hin schreiben würde.

    Im Voraus vielen Dank.
    Grüsse Priscilla
     
  2. Hascheff

    Hascheff Moderator

    Hallo prissy,
    zufälligerweise gab es hier vor kurzem ein vergleichbares Problem.
    Lass dich nicht von den technischen Details abschrecken. Die Frage ist, was ist bei deinem Problem anders.
     
  3. prissy

    prissy Byte

    Hallo,
    vielen dank für dein Hinweis.
    Ich habe noch ein paar Verständnis frage,
    Bei der Beispiel Code, siehe unter :
    Hier sind ein paar Versrändnis fragen:

    1. Was passiet da genau:
    "arr = Array("*Berechnungsnachweis.xls", _
    "*Berechnungsnachweis*0.xls", "*Berechnungsnachweis*C.xls", "*Berechn*°.xls") "

    2. und unter:" PFAD = Me!Verzeichnis" das Programm weisst jo nicht wo er die Datei soll holen wen ich nur Pfad eingebe.
    musste ich nicht noch iergendwo ein
    "dir" Variable deklarien z.B
    Dim dir As String
    dir = "M:\Projekte\BI\BOXI.S4358\07_User\UserReports\"

    3. ja und da ist VerzeichnisSuchen auch eine Variable und sie ist auch nicht deklarier oder verstehe ich das falsch?
    strVerzeichnisName = VerzeichnisSuchen _
    ("Wählen Sie bitte das Verzeichnis aus!", Me!Verzeichnis).



    Danke für deiner Unterstüzung
    Grüsse prissy
     
  4. Hascheff

    Hascheff Moderator

    Hallo,
    In dieser Liste wird festgelegt, nach welchen Dateien gesucht werden soll. Gleich im Anschluss wird eine Schleife gestartet,
    Code:
    For iCounter = LBound(arr) To UBound(arr)
    ...
    Next iCounter
    in der bei jedem Schleifendurchlauf einer dieser Einträge ausgelesen wird.
    Code:
    .FileName = arr(iCounter)
    
    Da die Listeneinträge Platzhalter besitzen, können jedesmal mehrere Dateien gefunden werden. Deshalb existiert noch eine innere Schleife,
    Code:
    For I = 1 To .FoundFiles.Count
    ...
    Next I
    in der jedesmal eine der Dateien ausgewertet wird.
    PFAD ist die von dir DIR genannte Variable.
    "Me!Verzeichnis" ist der der Inhalt eines Textfeldes im aktuellen Formular. "Me!" bezieht sich immer auf das Formular, das den Code enthält. "Verzeichnis" ist der Name des Textfeldes.
    VerzeichnisSuchen hab ich zwar noch nicht benutzt, aber nach der Syntax kann es sich nur um ein Access-Dialogfeld handeln. Klick mal mit der Maus auf das Wort und drück <F1>, dann bekommst du bestimmt diese Information.
     
  5. prissy

    prissy Byte

    Hallo Hascheff,
    vielen Dank für deiner Hilfe.
    Ich bin zimmlcih weit gekommen.

    Ich ha nur noch ein Problemmm,.... ich hoffe du kannst mir helfen.
    Habe folgendes gemacht für die Import nach Access:

    Ich hette jetzt noch gern, wenn das Programm alle Excel Datei gefunden hat, mir ein MsgBox mit der Summe alle gefunden Excel Datei zeigt.
    Ich habe gesehen das es mit Execute geht, siehe unter:
    nun ich weiss jetzt nicht wie ich das im meinem Code einbauen soll.
    Kannst du mir helfen?



    Vielen Dank
    grüsse prissy
     
  6. Hascheff

    Hascheff Moderator

    Hallo prissy,
    du bezweifelst mit Recht, dass alle Dateien eingelesen werden. Deine While-Schleife wird, wenn ich das richtig gelesen habe, nur genau einmal durchlaufen.

    Du hast das Array aus dem Code genommen ("dim arr ..." kann auch entfernt werden), das wird wohl so richtig sein. Damit brauchst du auch nicht die äußere Schleife des Codes aus #3
    Code:
    For iCounter = LBound(arr) To UBound(arr)
    
    Next iCounter
    Aber die innere Schleife brauchst du.
    Du hast die Unterverzeichnisse durch
    Code:
    strVerz = dir(strDir & "*.*", vbDirectory)
    eingebunden. Ich geh mal davon aus, dass es mehrere geben kann. Also muss
    Code:
    DoCmd.TransferSpreadsheet acImport, , "T-UserReportsNew", strDir & strVerz & "\Reports.xls", True
    mehrmals ausgeführt werden. Dafür war in #3 der Code
    Code:
    For I = 1 To .FoundFiles.Count
    
    DoCmd.TransferSpreadsheet , , Tabelle, .FoundFiles(I), False, "Umgewandelt$"
    
    Ich lass mal die Fehlerbehandlung weg, damit es übersichtlicher wird.
    Vorher muss natürlich FoundFiles.Count und FoundFiles(I) für alle i ermittelt werden, deshalb
    Code:
    With Application.FileSearch
    .NewSearch
    .LookIn = PFAD
    .SearchSubFolders = True[COLOR="DarkOrange"] 'Hier wird viel einfacher als bei dir die Suche in Unterverzeichnissen einbezogen.[/COLOR]
    .FileName = arr(iCounter)
    .Execute
    
    End With
    Ich glaub, ich erklär lieber mal die Bedeutung von "With": Ohne "With" wäre der Code umständlicher:
    Code:
    Application.FileSearch.NewSearch
    Application.FileSearch.LookIn = PFAD
    Application.FileSearch.SearchSubFolders = True
    Application.FileSearch.FileName = arr(iCounter)
    Application.FileSearch.Execute
    For I = 1 To Application.FileSearch.FoundFiles.Count
    
    DoCmd.TransferSpreadsheet , , Tabelle, Application.FileSearch.FoundFiles(I), False, "Umgewandelt$"
    Ich denke, es reicht für heute. :wegmuss:
    Eins noch: Wenn du hier
    Code:
    .Execute
    'If .Execute() > 0 Then
    'MsgBox "Es wurde(n) " & .FoundFiles.Count & " Datei(en) gefunden."
    
    die Hochkommas rausnimmst, darf .Execute nicht doppelt im Code sein.
    Code:
    '.Execute
    If .Execute() > 0 Then
    MsgBox "Es wurde(n) " & .FoundFiles.Count & " Datei(en) gefunden."
    
     
  7. prissy

    prissy Byte

    Hallo,

    Ich bin endlich fertig geworde. Muss jetzt nur noch ein Dokumentation schreiben, aber ja.
    ich möchte mich bei dir, für deiner Hilfe Herzlich bedanken. Es war sehr sehr Hilfsreich.:)
    Grüsse Prissy
     
  8. Hascheff

    Hascheff Moderator

    Hallo,
    freut mich! Alles Gute!
     
Thread Status:
Not open for further replies.

Share This Page