WinFuture-Forum.de: CSV Import von bestimmten Feldern (nicht alle) - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Office 2007
Seite 1 von 1

CSV Import von bestimmten Feldern (nicht alle) Bank csv file import, aber nur bestimmte Felder


#1 Mitglied ist offline   Crashtaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 339
  • Beigetreten: 19. November 03
  • Reputation: 2
  • Geschlecht:unbekannt
  • Interessen:Interessen!? Hmmm... also...

geschrieben 02. August 2017 - 14:14

Ich habe folgendes macro im Internet gefunden und es funktioniert sehr gut.

Da ich absolute keine Ahnung von Visual Basic etc habe würde ich gerne ein Kleinigkeit hinzugefügt haben.

Dieses Macro, wenn angeklickt, öffnet ein neues Dialog wo ich eine csv datei auswählen muss.
Nach der Auswahl import es den KOMPLETTEN Inhalt in mein Excel Dokument und zwar so dass es es unten anhängt.

So weit so gut, was ich jetzt gerne noch hätte wäre die Auswahl von bestimmten Feldern und nicht alles.

Könnte mir jemand dabei helfen? Vielen Dank
Sub Datei_Importieren_2()
     Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
     Const cstrDelim As String = ";" 'Trennzeichen
     
  With Application.FileDialog(msoFileDialogFilePicker)
     .AllowMultiSelect = False
     .Title = "Datei wählen"
     .InitialFileName = ""  'Pfad anpassen
     .Filters.Add "CSV-Dateien", "*.csv", 1
     .Filters.Add "Alle Dateien", "*.*", 2
     If .Show = -1 Then
       strFileName = .SelectedItems(1)
     End If
   End With
     
     If strFileName <> "" Then
       Application.ScreenUpdating = 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, 4)
             .Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
               = Application.Transpose(Application.Transpose(arrTmp))
              .Cells(lngLast, Columns.Count).End(xlToLeft).Offset(, 1) = strFileName
'              .Cells(lngLast, Columns.Count).End(xlToLeft).Offset(, 1) _
                = Mid(strFileName, InStrRev(strFileName, "\") + 1)
           End With
         End If
       Next lngR
     End If
     'Sheets(1).Range("A1")=strFileName 'Dateiname in Blatt1!A1
   End Sub




1

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 02. August 2017 - 14:50

1. Weiteres Arbeitsblatt erstellen
2. Die "neue" CSV-Datei dort importieren (egal wie)
3. Vom ursprünglichen Arbeitsblatt aus die benötigten Daten referenzieren, zB per =NeuesBlatt!A1, wenn das Quellarbeitsblatt "NeuesBlatt" hieß und das gesuchte Datum in Zelle A1 stand.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Crashtaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 339
  • Beigetreten: 19. November 03
  • Reputation: 2
  • Geschlecht:unbekannt
  • Interessen:Interessen!? Hmmm... also...

geschrieben 02. August 2017 - 14:55

Danke für die schnelle Antwort.

Genau das will ich eben nicht, da es nicht mehr dynamisch ist. Ich füge ja ständig neue Informationen hinzu.

Also die idee ist ja, ich ziehe ständig eine neue CSV Datei von meinem Bankkonto.
Und die neuen Werte sollen ja hinzugefügt werden (ohne die Alten zu überschreiben).

Das macht das Macro auch wunderbar. Leider importiert das Macro halt alles (Kontonummern, Referencewerte etc brauche ich zb nicht da drin).

Ich könnte jetzt natürlich die CSV datei öffnen und die entsprechenden Spalten manuell löschen und dann die Datei importieren. Aber bevor ich das mache hoffe ich doch dass jemand das Macro ein wenig modifizieren kann.
0

#4 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 02. August 2017 - 15:08

Da gibt es mehrere Wege. Also einmal könnte man die überflüssigen Daten in der csv löschen (also durch das Makro) oder man könnte die überflüssigen Daten beim Einlesen überspringen. Wäre zu überlegen, was sinnvoller ist.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#5 Mitglied ist offline   Crashtaker 

  • Gruppe: aktive Mitglieder
  • Beiträge: 339
  • Beigetreten: 19. November 03
  • Reputation: 2
  • Geschlecht:unbekannt
  • Interessen:Interessen!? Hmmm... also...

geschrieben 03. August 2017 - 08:44

Beitrag anzeigenZitat (Holger_N: 02. August 2017 - 15:08)

Da gibt es mehrere Wege. Also einmal könnte man die überflüssigen Daten in der csv löschen (also durch das Makro) oder man könnte die überflüssigen Daten beim Einlesen überspringen. Wäre zu überlegen, was sinnvoller ist.


Danke für die Antwort.
Beides geht, die csv Datei ist eh nur temporär die wird danach gelöscht - was halt einfacher zu programmieren ist.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0