Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

täglicher csv import

täglicher csv import
30.06.2014 12:21:51
Alexander
Hallo Zusammen,
Ich hab folgendes vor. Ich bekomme täglich eine csv Datei in den selben Ordner gestellt. Bei dem Dateinamen sind nur die ersten vier Zahlen gleich, der Rest variiert nach belieben (auch nur Zahlen). Wenn ich nun die DB öffne, soll das Programm alle neuen CSV Dateien importieren (ab Zeile 4) und dann löschen (in dem Ordner sind noch weitere Dateien enthalten).
Am liebsten wäre es mir, wenn das Programm die Daten auch gleich aufbereitet. z.B. wird das Datum ohne Punkt geliefert. (Beispiel: 240614).
Das hab ich bis jetzt, aber es gibt da ein kleines Problem.
Option Compare Database
Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Name*"
.InitialFileName = "C:\*.csv"
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName  "" Then
Application.ScreenUpdating = FalseBildschirms 'bzw. nur false
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 1 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 6)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
End Sub
Nur leider läuft der Code nicht, da er ein Problem mit " With Application.FileDialog(msoFileDialogFilePicker)" hat.
Der genaue Fehler lautet: "Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden" Er zeigt immer an, dass was mit der Application nicht stimmt... "die methode 'filedialog' für das objekt '_application' ist fehlgeschlagen".
Das ist ein Runtime Error, oder?
Ich hoffe auf eure Hilfe, vielen Dank!
Alexander

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: täglicher csv import
30.06.2014 13:21:41
fcs
Hallo Allexander,
ich hab dein Makro unter Excel 2010 getestet:
Es gibt bei mir zwei Syntaxfehler bzw. Variablenfehler:
1. Option Compare Database
Database ist unter Excel 2010 nur gültig/möglich für Microsoft Access, Excel 2010 kennt nur Binary oder Text
2. Application.ScreenUpdating = FalseBildschirms 'bzw. nur false
Variable FalseBildschirms ist nicht deklariert. Zeile ändern in
Application.ScreenUpdating = False 'Bildschirms 'bzw. nur false
Zusätzlich sollte am Ende des Makros die Bildschirmaktualisierung wieder auf True gesetzt werden.
Der Auswahldialog für die Datei ist korrekt und funktioniert bei mir.
Prüfe mal, ob bei dir im VBA-Editor unter Extras-Verweise für die Datei der Verweis auf die Microsoft Office 14 Object Library gesetzt ist bzw. die Nr. mit deiner Office-Version. ggf. den Verweis aktivieren.
Bei der Konversion des Datum als Text/Zahl im Format TTMMJJ in ein Exceldatum kommt es darauf an, ob die die Konversion nach dem Einfügen der CSV-Daten in die Tabelle durchführen willst oder vorher im temporären Array arrTemp
Ich hab mal beide Möglichkeiten in dein Makro eingebaut. Die Nummer der Spalte im Array bzw. Tabellenblatt musst du ggf. anpassen.
Gruß
Franz
Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = ";" 'Trennzeichen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Name*"
.InitialFileName = "C:\*.csv"
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName  "" Then
Application.ScreenUpdating = False 'Bildschirms 'bzw. nur false
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 1 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
'Umwandlung Datum "TTMMJJ" in "TT.MM.JJJJ" in Array
arrTmp(0) = Format(CDate(Mid(arrTmp(0), 1, 2) & "." & Mid(arrTmp(0), 3, 2) _
& "." & Mid(arrTmp(0), 5, 2)), "DD.MM.YYYY") 'evtl. "YYYY-MM-DD" als Format
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 6)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
'Umwandlung Datum "TTMMJJ" in Zelle, Zellen mit gewünschtem Datumsformat formatieren
With .Cells(lngLast, 1)
.Value = CDate(Mid(Format(.Value, "000000"), 1, 2) _
& "." & Mid(Format(.Value, "000000"), 3, 2) _
& "." & Mid(Format(.Value, "000000"), 5, 2))
End With
End With
End If
Next lngR
End If
Application.ScreenUpdating = True 'Bildschirms 'bzw. nur false
End Sub

Anzeige
AW: täglicher csv import
30.06.2014 13:59:36
Alexander
Hallo Franz,
vielen Dank für deine Antwort.
Vor lauter VBA hab ich vergessen das ich das fürs Access brauche... XD Ich hab bis vor zwei Wochen alles in Excel gemacht und bin nun an die Grenzen gelangt (zu viele Datensätze) und deshalb auf Access umgestiegen. Das Forum nutze ich schon länger als "Inspiration". *verwirrt*
Deinen Code kann ich also leider nicht nutzen...
Gruß
Alexander

dann solltest du dich...
30.06.2014 15:06:58
Rudi
Hallo,
an ein Access-Forum wenden.
Access-VBA hat mit Excel-VBA noch weniger gemeinsam als Word-VBA.
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige