Office: Import CSV / Überprüfung Feldnamen Quelldatei CSV / Zieldatei: Access Tabelle

Helfe beim Thema Import CSV / Überprüfung Feldnamen Quelldatei CSV / Zieldatei: Access Tabelle in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich möchte gerne beim Import einer CSV - Datei (eingebettet in ein VBA Modul / Import-Spezifikation ist angegeben) überprüft wissen, ob die... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Rednaxela24, 9. Juli 2012.

  1. Import CSV / Überprüfung Feldnamen Quelldatei CSV / Zieldatei: Access Tabelle


    Hallo,

    ich möchte gerne beim Import einer CSV - Datei (eingebettet in ein VBA Modul / Import-Spezifikation ist angegeben) überprüft wissen, ob die Feldnamen der Quelldatei identisch ist mit den Feldnamen der Zieldatei in der Access-Tabelle.

    Aktuell wird jede CSV - Datei importiert. Import CSV / Überprüfung Feldnamen Quelldatei CSV / Zieldatei: Access Tabelle :confused:

    Danke vorab für diesen wertvollen Tip.
     
    Zuletzt bearbeitet: 9. Juli 2012
    Rednaxela24, 9. Juli 2012
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    untenstehend habe ich Dir eine benutzerdef. Funktion "Teste_CSVImportFelder" gebastelt, die 2 Parameter benötigt:
    1) String-Parameter "ImpSpez$": der Name der Importspezifikation in Access
    2) String-Parameter "ImpDatei$": der Name (inkl. Pfad) der zu importierenden CSV-Datei oder Text-Datei
    Die Funktion gibt einen Boolean-Wert zurück:
    True: wenn alles in Ordnung war und auch die Felder in der Importspezifikation und der Importdatei übereinstimmten;
    False: wenn irgendwo ein Problem auftrat. Die Art des Problems wird zuvor in einer MsgBox gemeldet.

    Es werden sowohl zeichengetrennte Importdateien als auch Importdateien mit fixen Feldbreiten geprüft:
    - dies muss natürlich auch entsprechend in der Importspezifikation enthalten sein!!
    - ferner muss in der Importspezifikation enthalten sein, dass die Importdatei eine Kopfzeile hat!!

    Falls Du die enthaltenen Messageboxen nicht haben möchtest, dann brauchst Du sie nur auskommentieren.

    Wichtig ist ferner noch: Es müssen im VBA-Editor die Verweise auf die beiden Objektbibliotheken vorhanden sein, auf die ich am Anfang des Codes (als Kommentar) verwiesen habe!!

    Code:
    '
    'Verweise im VBA-Editor Menü "Extras" auf folgende Bibliotheken sind notwendig:
    '1) Microsoft DAO m.n Object Library   (wobei m.n eine beliebige Versionsnr. ist)
    '2) Microsoft Scripting Runtime
    '
    Function Teste_CSVImportFelder(ImpSpez$, ImpDatei$) As Boolean
      Dim cdb As DAO.Database
      Dim rstSpez As DAO.Recordset
      Dim rstCols As DAO.Recordset
      Dim fs As FileSystemObject, txt As TextStream
      Dim KopfZeile$, Titel$
      Dim FldDelim$, Flds$(), I%, KopfFeld$, ImpSpFeld$
    '----
      Set cdb = Application.CurrentDb
      Teste_CSVImportFelder = False
      Titel$ = "Teste_CSVImportFelder"
    '---- Spezifikation "ImpSpez$" lesen
      Set rstSpez = cdb.OpenRecordset("MSysIMEXSpecs", dbOpenDynaset)
      rstSpez.FindFirst "SpecName='" & ImpSpez$ & "'"
      If rstSpez.NoMatch Then
        MsgBox Prompt:="Die Importspezifikation '" & ImpSpez$ & "'" & vbCrLf & _
                       "wurde nicht gefunden. -> Abbruch!", _
               Title:=Titel$
        GoTo Exit_Teste_Import
      End If
      If rstSpez!StartRow = 0 Then
        MsgBox Prompt:="In der Importspezifikation '" & ImpSpez$ & "'" & vbCrLf & _
                       "ist keine Kopfzeile (für die Feldnamen) festgelegt. -> Abbruch.", _
               Title:=Titel$
        GoTo Exit_Teste_Import
      End If
    '---- Importdatei 'ImpDatei$' öffnen, Kopfzeile lesen
      On Error GoTo Err_Teste_ImportDatei
      Set fs = New FileSystemObject
      Set txt = fs.OpenTextFile(FileName:=ImpDatei$, IOMode:=ForReading)
      KopfZeile$ = txt.ReadLine
      txt.Close
      Set fs = Nothing
      On Error GoTo 0
    '---- Spaltendef. der Importspezifikation lesen
      Set rstCols = cdb.OpenRecordset("SELECT * FROM MSysIMEXColumns WHERE SpecID=" & _
                                      rstSpez!SpecID & " ORDER BY Start;", dbOpenDynaset)
      If rstSpez!SpecType = 1 Then
        'Zeichengetrennte Felder
        Titel$ = "Zeichengetrennte Importdatei " & ImpDatei$
        FldDelim$ = rstSpez!FieldSeparator   'Feldtrennzeichen
        Flds$ = Split(KopfZeile$, FldDelim$) 'Liste der Feldbezeichner
      Else
        'Felder mit fixer Breite
        Titel$ = "Importdatei " & ImpDatei$ & " mit fixer Spaltenbreite"
      End If
    '---- Vergleichen der Spaltendefinitionen
      rstCols.MoveFirst: I% = 0
      Do Until rstCols.EOF
        If rstSpez!SpecType = 1 Then
          'Zeichengetrennte Felder
          KopfFeld$ = UCase$(Trim$(Flds$(I%)))
        Else
          'Felder mit fixer Breite
          KopfFeld$ = UCase$(Trim$(Mid$(KopfZeile$, rstCols!Start, rstCols!Width)))
        End If
        ImpSpFeld$ = UCase$(Trim$(rstCols!FieldName))
        If KopfFeld$ <> ImpSpFeld$ Then
          MsgBox Prompt:="Das " & I% + 1 & ". Feld '" & KopfFeld$ & "' des Dateikopfes " & vbCrLf & _
                         "unterscheidet sich vom " & I% + 1 & ". Feld '" & ImpSpFeld$ & "' der Importspezifikation." & vbCrLf & _
                         "-> Abbruch.", Title:=Titel$
          GoTo Exit_Teste_ImportFelder
        End If
        rstCols.MoveNext: I% = I% + 1
      Loop
    '---- Beenden des Vergleichens
      MsgBox Prompt:="Die Feldnamen der Importdatei '" & ImpDatei$ & "' sind" & vbCrLf & _
                     "mit den Feldern der Importspezifikation '" & ImpSpez$ & "'" & vbCrLf & _
                     "identisch. Ob die Datentypen identisch sind, wurde nicht geprüft.", _
             Title:=Titel$
      Teste_CSVImportFelder = True
    Exit_Teste_ImportFelder:
      rstCols.Close
    Exit_Teste_Import:
      rstSpez.Close
      Exit Function
    Err_Teste_ImportDatei:
      MsgBox Prompt:="Die CSV-Importdatei '" & ImpDatei$ & "'" & vbCrLf & _
                     "existiert nicht!  --> Abbruch!", Title:=Titel$
      Resume Exit_Teste_Import
    End Function
    
     
    Zuletzt bearbeitet: 29. Juli 2012
    Exl121150, 29. Juli 2012
    #2
Thema:

Import CSV / Überprüfung Feldnamen Quelldatei CSV / Zieldatei: Access Tabelle

Die Seite wird geladen...
  1. Import CSV / Überprüfung Feldnamen Quelldatei CSV / Zieldatei: Access Tabelle - Similar Threads - Import CSV Überprüfung

  2. CSV in Outlook

    in Microsoft Excel Hilfe
    CSV in Outlook: Wie kann ich die Uhrzeit eines Termins über die CSV-Datei in Outlook importieren?
  3. CSV-Import mit seeehr langen Zahlen

    in Microsoft Excel Hilfe
    CSV-Import mit seeehr langen Zahlen: Moin ihr Lieben, ich habe von einem Kunden eine CSV-Datei erhalten mit 19-stelligen Zahlen-Codes, teils auch mit führenden Nullen, die z.B. so aussehen: 0001234567890123456 0012345678901234567...
  4. CSV Import

    in Microsoft Excel Hilfe
    CSV Import: Hallo, ich habe folgende CSV Datei: (kommt aus einem Wettkampfprogramm) und möchte die in Excel öffnen weil ich Rekordanpassungen machen muss, aber bei bestimmten Zeiten wird es falsch...
  5. Nach Import von Kontakten keine Geburtstag

    in Microsoft Outlook Hilfe
    Nach Import von Kontakten keine Geburtstag: Hallo, ich habe meine Kontakte in Outlook über eine csv Datei hinzugefügt. Sie sind auch alle vorhanden auch mit Geburtstagen. Mir werden die Geburtstage aber nicht in meinem Kalender angezeigt....
  6. Automatischer Import der aktuellsten CSV

    in Microsoft Excel Hilfe
    Automatischer Import der aktuellsten CSV: Hallo, Als erstes möchte ich mich bei Euch bedanken das Ihr solchen DAUs wie mich mit Euren Fachwissen unterstützt. Danke. Wie Ihr Euch bei dieser Einleitung sicherlich denken könnt hab ich von...
  7. csv Import Tabelle mit viel Inhalt in einer Zelle

    in Microsoft Excel Hilfe
    csv Import Tabelle mit viel Inhalt in einer Zelle: Hallo, ich habe bei mir auf Arbeit ein sehr altes Informationssystem in dem wir unser Aktenarchiv organisiert haben. In diesem Archivsystem sind Informationen enthalten wie der zeitliche Umfang...
  8. Benutzerdefinierte Felder lassen sich nicht zuordnen. Outlook 365

    in Microsoft Outlook Hilfe
    Benutzerdefinierte Felder lassen sich nicht zuordnen. Outlook 365: Moin, homeofficebedingt wollte ich mal die Zeit nutzen meine Kontakte, die sonst an anderer Stelle verwaltet werden einheitlich in Outlook zu importieren. Anleitung gegoogelt, gefunden, befolgt...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden