Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1264to1268
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

Frage zum zugriff auf nicht gespeicherte Datei...!

Frage zum zugriff auf nicht gespeicherte Datei...!
Thomas
Hallo Excelfreunde,
ich exportiere eine CSV Datei. Zumindest steht als Hinweis wenn ich mit der Maus über den Button ziehe „Daten in CSV exportieren“ was ich dann bekomme ist eine Exceltabelle. Aus dieser Tabelle würde ich gerne gewisse Spalten ab Zeile 14 in eine andere Mappe übertragen nur ist in der Quelldatei=CSV das Datum in Spalte A absteigend sortiert und in der ZielTabelle= Kasse soll es aufsteigend sortiert in die nächste freie Zeile andere Spalte geschrieben werden.
Ich will die CSV Datei nicht Speichern und daher meine Frage ob es überhaupt möglich ist auf diese per VBA zuzugreifen? Wenn dies gehen sollte anbei ein Beispiel wie das ganze ausschaut.
Tabelle1
 ABCDEFGHIJ
1Tabelle1=Umsaetze_01234567_02.06.2012                 
2                   
3Umsaetze_01234567_ ist fix ändert sich nur immer das Datum was dem Heute entspricht.                 
4                   
5                   
6                   
7                   
8                   
9                   
10                   
11                   
12                   
13BuchungstagValueAuftraggeberEmpfängerTextTextTextTextUmsätze 
1401.06.201201.06.2012Text1Text a        100s
1501.06.201201.06.2012Text2Text b        200s
1630.05.201230.05.2012Text3Text c        90h
1729.05.201229.05.2012Text4Text d        500s
1827.05.201227.05.2012Text5Text e        1500h
19                   
20Die Anzahl der Zeilen ist unterschiedlich dann kommt noch ein Text.                 
21Die CSV Datei ist absteigend sortiert und soll wie in meiner Beispielsmappe in Tabelle Kasse eingetragen werden.                 
22Was geprüft werden sollte, ist ob Datum,Empfänger und der Umsatz nicht schon in Tabelle Kosten vorhanden ist.                 
23                   



Kasse
 ABCDEFGHI
1FirmaKostenEinnahmenAusgabenTextTextDatum   
2  Text e1500      27.05.2012   
3  Text d  500    29.05.2012  Aus dieser Datei sollen die aus der CSV Datei geholt werden.
4  Text c90      30.05.2012   
5  Text b  200    01.06.2012   
6  Text a  100    01.06.2012   

Tabellendarstellung in Foren Version 5.37


Ich habe im Internet nichts Ähnliches gefunden für das Übertragen und Umsortieren in andere Tabelle. Auch weil ich verwirrt bin schaut aus wie Exceltabelle und beim Schließen wird ich gefragt ob ich die CSV Datei Speichern möchte.
Aber erst die Frage ob es überhaupt geht und dann zu meinem anliegen.
Gruß Thomas aus Stuttgart
AW: Frage zum zugriff auf nicht gespeicherte Datei...!
02.06.2012 20:06:30
Oberschlumpf
Hi Thomas
Ich denke schon, dass alles, was du erreichen möchtest, möglich ist.
Aber...
...du hast uns deine Daten jetzt so gezeigt, dass es (nur) schön aussieht.
Wir müssten nun erst mal deine Daten in eine echte Exceldatei übertragen.
Auf nur Copy & Paste verlasse ich mich nicht, da auf diesem Weg nicht immer jeder Wert am gewünschten Platz in der Exceldatei landet.
Wir wäre es also (auch für weitere Fragen deinerseits), wenn du uns deine Bsp-Daten in einer Bsp-Datei per Upload zur Verfügung stellst?
Ciao
Thorsten
AW: Frage zum zugriff auf nicht gespeicherte Datei...!
02.06.2012 20:41:31
Thomas
Hallo Thorsten,
meine 2 Tabellenblättern sind ein genaues Spiegelbild derer nur in einer Mappe zusammengefügt.
Die CSV Datei mit Namen "Umsaetze_01234567_02.06.2012" ist genau so aufgebaut wie Tabelle1 in der Mappe.
Würde ich mir morgen die CSV Datei runterladen wäre der Name "Umsaetze_01234567_03.06.2012" übermorgen 04.06.2012 usw. Mach ich aber nicht täglich vielleicht nur 1 mal im Monat.
Die Tabelle Kasse ist wie das Orginal, auch die Namen. Im Blatt Kasse Zeile 1 sind die Spaltenköpfe wie in meinem Beispiel.
Die Mappe Kasse in der das Blatt Kasse steckt liegt auf C:\Mein Pfad\Kasse.xls\
Von da aus sollen die Daten aus der Tabelle"Umsaetze...." gezogen werden.
Auf Deine Antwort "Wir müssten nun erst mal deine Daten in eine echte Exceldatei übertragen." kann ich nur sagen, das die Datei wie eine Exceltabelle aussieht wie in meinem Beispiel Tabelle1.
Ist das nun Excel oder CSV? Ich denk das die CSVdaten in Excel konvertiert werden bzw. dann sind.
Ich kann leider nicht die Orginale Dateien zur Verfügung stellen. Ich hoffe dennoch das man dies gebacken bekommen kann.
Gruß Thomas aus Stuttgart
Anzeige
AW: Frage zum zugriff auf nicht gespeicherte Datei...!
02.06.2012 20:56:15
Oberschlumpf
Hi Thomas
Ok, ich versuch das, was ich meinte, anders zu erklären:
Zumindest ich habe nicht so wirklich Lust, (d)eine Datei erst mal nachbauen zu müssen, damit ich mit der eigentlichen Lösung beginnen kann - denn deine Datei existiert ja schon.
Dass du die Originaldaten verwenden sollst, hat niemand verlangt.
Du hast doch in deinem Startbeitrag Bsp-Daten gezeigt. Verwende diese doch in einer echten Exceldatei, die du uns dann per Upload zur Verfügung stellst.
Zur Info (falls du es noch nicht weißt): Eine CSV-Datei ist eine "stinknormale" Textdatei.
Speicher mal in Excel deine CSV-Datei im CSV-Format, und schau sie dir dann mit dem Texteditor an.
Ciao
Thorsten
Anzeige
AW: Frage zum zugriff auf nicht gespeicherte Datei...!
02.06.2012 20:58:01
fcs
Hallo Thomas,
eine CSV-Datei ist nichts anderes als eine Textdatei, in die die Daten nach einem vorgegeben Schema geschrieben werden. Wichtiges Kriterium ist dabei das Zeichen zum Trennen Datenfeldern/Spalten. In deutschen Anwendungen meist ein ";" in US-Anwendungen meist "," . Das ";" hat sich hier eingebürgert, um es vom Dezimaltrennzeichen unterscheiden zu können.
Excel ist so konfiguriert, das es die in CSV-Dateien enthaltenen Daten beim Öffnen der Datei automatisch als Exceltabelle darstellt. Beim Öffnen von CSV-Datei innerhalb von VBA kann es Probleme geben, da VBA erst einmal davon ausgeht, dass als Trennzeichen ein Komma verwendet wird.
Nachfolgnénd ein Makro, das den Import der Daten ausführen sollte. Beim Start des Makros muss die Datei mit dem Blatt "Kasse" die aktive Arbeitsmappe sein.
Gruß
Franz
'Erstellt mit Office 2010 professional, Excel2010, WindowsVista, alles Deutsch
Sub KassendatenHolen()
Dim wbKasse As Workbook, wksKasse As Worksheet, varAuswahl As Variant
Dim wbCSV As Workbook, wksCSV As Worksheet
Dim ZeileZiel As Long
Dim ZeileCSV As Long, ZeileCSV_1 As Long, ZeileCSV_L As Long
'Objekte in Kassen-Datei setzen
Set wbKasse = ActiveWorkbook
Set wksKasse = wbKasse.Worksheets("Kasse")
With wksKasse
'letzte Zeile in Spalte G (Datum) mit Daten
ZeileZiel = .Cells(.Rows.Count, 7).End(xlUp).Row
End With
'CSV-Datei wählen/öffnen
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte CSV-Datei öffnen"
.InitialView = msoFileDialogViewDetails
.InitialFileName = "*.csv"
If .Show = -1 Then
varAuswahl = .SelectedItems(1)
Set wbCSV = Workbooks.Open(Filename:=varAuswahl, ReadOnly:=True, Local:=True)
Set wksCSV = wbCSV.Worksheets(1)
ZeileCSV_1 = 14
ZeileCSV_L = ZeileCSV_1
With wksCSV
'letzte Zeile mit Datum in Spalte A suchen
Do
.Cells(ZeileCSV_L, 1).Value = CDate(.Cells(ZeileCSV_L, 1).Text)
ZeileCSV_L = ZeileCSV_L + 1
Loop Until Not IsDate(.Cells(ZeileCSV_L + 1, 1).Text)
'Sortieren nach Datum
If ZeileCSV_L > ZeileCSV_1 Then
With .Range(.Rows(ZeileCSV_1 - 1), .Rows(ZeileCSV_L))
.Sort key1:=.Range("A1"), order1:=xlAscending, Header:=xlYes
End With
End If
'Daten übertragen
For ZeileCSV = ZeileCSV_1 To ZeileCSV_L
ZeileZiel = ZeileZiel + 1
'Datum - Spalte A nach Spalte G
wksKasse.Cells(ZeileZiel, 7).Value = .Cells(ZeileCSV, 1).Value
'Kosten - Spalte D nach Spalte B
wksKasse.Cells(ZeileZiel, 2).Value = .Cells(ZeileCSV, 4).Value
'Einnahmen,Ausgaben
If LCase(.Cells(ZeileCSV, 10)) = "s" Then
wksKasse.Cells(ZeileZiel, 4).Value = .Cells(ZeileCSV, 9).Value
ElseIf LCase(.Cells(ZeileCSV, 10)) = "h" Then
wksKasse.Cells(ZeileZiel, 3).Value = .Cells(ZeileCSV, 9).Value
End If
Next
End With
wbCSV.Close savechanges:=False
End If
End With
End Sub

Anzeige
AW: Teilerfolg :-) Franz!
02.06.2012 21:25:24
Thomas
Hallo Franz,
2 kleine dinge. Dein Code überträgt mir alles in die richtigen Spalten aber es wird nicht geprüft ob die Daten schon in der Tabelle Kasse stehen und ggf. nur die Daten übertragen werden müssen die fehlen. Zum anderen ist das Datum in der Tabelle aufsteigend sortiert und die Übertragung ist absteigend.
Ich muss noch testen ob ich die Datei erst speichern muss oder wie eigendlich gewünsch auch nur öffnen kann zum übertragen und dann einfach schließen ohne Speichern.
Gruß Thomas aus Stuttgart
AW: Teilerfolg :-) Franz!
02.06.2012 22:28:27
Thomas
Hallo Franz,
ich hab die stelle gefunden das er sie richtig sortiert übertagen tut (order1:= auf 2).
Was mich stört ist das ich die CSV Datei erst als solche Speichern muss und sie über den Dialog öffnen muss.
Geht es nicht das ich sie nach dem runterladen öffne und die Daten ausgelesen werden ohne zu Speichern?
Wie kann verhindert werden das Beträge doppelt/mehrfach vorkommen? Ich kann die Datei für 1 Woche runterladen, für 2, 3, 4 Wochen oder alle dann sind alle Buchungen von 6 Monaten dabei und somit sind Datensätze doppelt oder mehrfach vorhanden was nicht gut ist.
Ich wünsch erst mal eine gute Nacht.
Gruß Thomas aus Stuttgart
Anzeige
AW: Teilerfolg :-) Franz!
02.06.2012 23:40:40
fcs
Hallo Thomas,
Geht es nicht das ich sie nach dem runterladen öffne und die Daten ausgelesen werden ohne zu Speichern?
Das geht auch. Du solltest allerdings prüfen, ob die CSV-Dateien nicht doch auf deinem Rechner entweder im TEMP-Verzeichnis oder einem Standard-Download-Verzeichnis gespeichert werden.
In der txt-Datei ist ein angepasstes Makro.
Nach dem Runteraden/Öffnen der CSV-Datei. Die Arbeitsmappe mit Blatt "Kasse" aktivieren/öffnen und das Makro starten. Der import muss dann nochmals bestätigt werden. Sollten mehrere CSV-Dateien geöffnet sein, dann kann eine per Nr.-Eingabe ausgewählt werden.
Wie kann verhindert werden das Beträge doppelt/mehrfach vorkommen?
Mit der Prüfung des Datums werden nur noch neuere Daten eingelesen. Du solltest also als erstes die Daten von 6 Monaten importieren.
Gruß
Franz
https://www.herber.de/bbs/user/80392.txt
Anzeige
AW: Teilerfolg :-) Franz!
02.06.2012 22:32:02
fcs
hallo Thomas,
die Sortierung funktionierte bei meinen Test.
Ich hab noch mal etwas angepasst, falls die Zellen mit Datum in Spalte A inder CSV-Datei als Text formatiert sein sollten.
Die Überprüfung des Datums beim Einlesen hab ich ergänzt. Es werden nur die Datum aus der CSV eingelesen, die neuer sind als das neueste Datum in Spalte G.
Gruß
Franz
Textdatei mit Code
https://www.herber.de/bbs/user/80391.txt
AW: Danke :-) Franz und Thorsten!
03.06.2012 07:15:02
Thomas
Guten Morgen Franz,
dein vorletzter Code sagt mir voll zu. Ich kann die Datei öffnen und die Daten übertragen und die Sortierung funktoniert auch.
Bei deinem letzten Code kommt wieder der Dialog welche Datei aber dann muss ich erst wieder die Datei Speichern das geöffnet werden kann und das will ich ja nicht haben.
Ich danke Dir und Thorsten für die Hilfe und Wünsche allen einen schönen Sonntag.
Gruß Thomas aus Stuttgart
Anzeige
AW: Danke :-) Franz und Thorsten!
03.06.2012 08:17:57
fcs
Hallo Thomas,
es freut mich, dass das Makro jetzt gemäß deinen Wüschen funktioniert.
Die Wunschlösung war schon die letzte von mir gepostete.
Ich hatte nur vor meiner vorletzten Antwort den Browser nicht aktualisert und deshalb die angepasste Lösung mit dem Dateiauswahl-Katalog gepostet.
Schönen Sonntag noch
Franz
AW: Danke :-) Franz und Thorsten!
03.06.2012 08:45:52
Thomas
Hallo Franz,
stimmt es war der letzte Code von Dir aber das hab ich auch erst gesehen als ich Dir geantwortet hatte.
Es ist verwirrend wenn man zwischen rein Antworten kann, besser wäre wenn die Beiträge nur nacheinander erscheinen so das man Schritt für Schritt nachlesen kann ohne erst zu schauen zu müssen nach Datum und Zeit.
Dennoch Danke und macht weiter so ich bin froh mich hier dem Forum angeschlossen zu haben.
PS. : Ich hab die Suche auf meinem Laufwerk C: bemüht und noch einträge gefunden und gelöscht.
Muss halt beim nächsten mal wieder schauen ob sich wo was versteckt. Ganz bekomme ich es wohl nicht weg weil bestimmt alles noch Spuren hinterläßt auch wenn es gelöscht und nicht mehr sichtbar ist.
Gruß Thomas aus Stuttgart
Anzeige
AW: Danke :-) Franz und Thorsten!
03.06.2012 09:32:14
fcs
Hallo Thomas,
probiere mal folgende Ergänzung am Ende des Makros. Dann sollte die hochgeladene CSV-Datei auch gelöscht werden.
Gruß
Franz
  End With
varAuswahl = wbCSV.FullName
wbCSV.Close savechanges:=False
If Dir(varAuswahl)  "" Then Kill varAuswahl
End Sub

Danke Franz schönes We! OT
03.06.2012 10:35:05
Thomas

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige