Supportnet / Forum / Tabellenkalkulation
CSV-Dateien verbinden
Frage
HI,
kann mir von Euch vielleicht einer weiterhelfen?
Will in Excel eine Tabelle in der von verschiedenen CSV-Dateien die Werte stehen.
Die CSV-Dateien bestehen alle aus 4 Spalten und einer nicht konstanten Anzahl von Zeilen. Da jeden Tag eine neue Datei erzeugt wird sollte die neue Datei immer aktualisiert werden können. Die CSV-Dateien sind alle in einem Ordner und haben den Aktuellen Tag als Name (26-Sep-05)
Wäre super wenn mir jemand Helfen könnte
lexika
Antwort 1 von lexika
HI,
kann mir vielleicht jemand sagen was ich ändern muß damit nur die neuste datei hinzugefügt wird?
Füge momentan zwei csv dateien mit
copy *.csv gesamt.csv zusammen danach wird die ältere gelöscht wenn jetzt eine neue hinzukommt soll diese zu gesamt.csv hinzugefügt werden.
Danke
kann mir vielleicht jemand sagen was ich ändern muß damit nur die neuste datei hinzugefügt wird?
Füge momentan zwei csv dateien mit
copy *.csv gesamt.csv zusammen danach wird die ältere gelöscht wenn jetzt eine neue hinzukommt soll diese zu gesamt.csv hinzugefügt werden.
Danke
Antwort 2 von coros
Hi lexika ,
Deine Angaben sind aber sehr wage. Damit kann man Dir leider sicherlich keine Lösung geben. Gibt es in der Datei, in die die Daten kopiert werden sollen, eine Spalte, in der das Datum auftaucht? Oder ist die letzte gefüllte Zeile auch gleich der letzte Datensatz der letzten ausgelesenen Datei? Wohin soll kopiert werden?
Und das sind nur einige Fragen, deren Antwort man benötigt um Dir zu helfen. Schreibe also bitte genaustens auf, wie die Dateien aussehen usw. Dann kommt sicherlich eine Lösung. Denn ich glaube mal, ich bin nicht der einzige, der mit der kurzen Erklärung nicht viel anfangen kann (siehe Datum Deiner Frage)
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Deine Angaben sind aber sehr wage. Damit kann man Dir leider sicherlich keine Lösung geben. Gibt es in der Datei, in die die Daten kopiert werden sollen, eine Spalte, in der das Datum auftaucht? Oder ist die letzte gefüllte Zeile auch gleich der letzte Datensatz der letzten ausgelesenen Datei? Wohin soll kopiert werden?
Und das sind nur einige Fragen, deren Antwort man benötigt um Dir zu helfen. Schreibe also bitte genaustens auf, wie die Dateien aussehen usw. Dann kommt sicherlich eine Lösung. Denn ich glaube mal, ich bin nicht der einzige, der mit der kurzen Erklärung nicht viel anfangen kann (siehe Datum Deiner Frage)
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von lexika
HI,
die zeilen in den einzelnen csv-dateien sehen so aus
08-Okt-05 00:00:48 18 85,5
08-Okt-05 00:00:58 18 85,5
es sind vier spalten wobei in der ersten das datum und in der zweiten die uhrzeit steht. die uhrzeit ist über den tag verteilt immer eine andere das datum ändert sich von datei zu datei wobei es sein kann das mal die ersten paar werte noch das datum vom vortag haben. momentan füge ich die einzelnen csv dateien zusammen zu einer aber in zukunft soll immer die älteste datei gelöscht werden um platz zu sparen. wenn nun aber die älteste weg ist und ich füge die dateien wieder zusammen fehlen die daten auch in der gesamtdatei da nur die dateien im ordner zusammengefügt werden und nicht die neuste einfach angehängt wird.zusammengefügt werden die dateien durch einen button in excel der eine batch datei mit dem inhalt copy *.csv gesamt.csv aufruft.
Danke
die zeilen in den einzelnen csv-dateien sehen so aus
08-Okt-05 00:00:48 18 85,5
08-Okt-05 00:00:58 18 85,5
es sind vier spalten wobei in der ersten das datum und in der zweiten die uhrzeit steht. die uhrzeit ist über den tag verteilt immer eine andere das datum ändert sich von datei zu datei wobei es sein kann das mal die ersten paar werte noch das datum vom vortag haben. momentan füge ich die einzelnen csv dateien zusammen zu einer aber in zukunft soll immer die älteste datei gelöscht werden um platz zu sparen. wenn nun aber die älteste weg ist und ich füge die dateien wieder zusammen fehlen die daten auch in der gesamtdatei da nur die dateien im ordner zusammengefügt werden und nicht die neuste einfach angehängt wird.zusammengefügt werden die dateien durch einen button in excel der eine batch datei mit dem inhalt copy *.csv gesamt.csv aufruft.
Danke
Antwort 4 von coros
Hi lexika,
jetzt verstehe ich schon etwas mehr. Einige Fragen hätte ich da allerdings noch.
- Befinden sich denn nun mehrere CSV-Dateien in dem Verzeichnis oder nur die mit den aktuellen Daten. Ich frage, weil Du etwas schreibst von älteste Datei soll gelöscht werden. Wenn sich da mehrere befinden, welche davon ist denn dann die Älteste? Die Datei, die älter als eine Woche ist, oder älter als 4 Wochen oder älter als 1 Jahr?
- Werden die CSV-Dateien noch für etwas anderes benötigt oder sollen diese nur in eine Exceldatei eingefügt werden, wo sie dann weiter verarbeitet werden? Wenn diese Dateien nicht weiter benötigt werden, spricht etwas dagegen, wenn das Verzeichnis immer nur die aktuelle CSV-Datei enthält und diese dann nach dem Auslesen automatisch durch Excel gelöscht wird?
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
jetzt verstehe ich schon etwas mehr. Einige Fragen hätte ich da allerdings noch.
- Befinden sich denn nun mehrere CSV-Dateien in dem Verzeichnis oder nur die mit den aktuellen Daten. Ich frage, weil Du etwas schreibst von älteste Datei soll gelöscht werden. Wenn sich da mehrere befinden, welche davon ist denn dann die Älteste? Die Datei, die älter als eine Woche ist, oder älter als 4 Wochen oder älter als 1 Jahr?
- Werden die CSV-Dateien noch für etwas anderes benötigt oder sollen diese nur in eine Exceldatei eingefügt werden, wo sie dann weiter verarbeitet werden? Wenn diese Dateien nicht weiter benötigt werden, spricht etwas dagegen, wenn das Verzeichnis immer nur die aktuelle CSV-Datei enthält und diese dann nach dem Auslesen automatisch durch Excel gelöscht wird?
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von lexika
HI coros,
es kommt täglich eine datei hinzu wobei mir excel jedesmal die neuste datei einliest (tagesdaten).
zudem sollen die dateien zu einer datei zusammengefügt werden um den verlauf anschauen zu können. die neuste (vom aktuellen tag) und die gesamtdatei sollen nicht gelöscht werden.
hab auch schon einen code welcher mir aber nicht die dateien zusammenfügt.
ein kleiner auszug:
Do While fn <> ""
Dim versuch As String
If fNeu <> fn And "versuch.csv" <> fn Then
Kill "D:\excel\Neu\1\" & fn & versuch
ShellAndWait ("D:\excel\Neu\1\test.bat")
Kill "D:\excel\Neu\1\versuch.csv"
Dim Quelle As String, Ziel As String
Quelle = "D:\excel\Neu\1\gesamt.csv"
Ziel = "D:\excel\Neu\1\versuch.csv"
FileCopy Quelle, Ziel
End If
fn = Dir()
Loop
es werden alle dateien bis auf zwei gelöscht die bat-datei wird ausgeführt die datei versuch wird gelöscht und danach wird die datei gesamt zu versuch umbenannt.
die batdatei will er nicht ausführen
mfg
lexika
es kommt täglich eine datei hinzu wobei mir excel jedesmal die neuste datei einliest (tagesdaten).
zudem sollen die dateien zu einer datei zusammengefügt werden um den verlauf anschauen zu können. die neuste (vom aktuellen tag) und die gesamtdatei sollen nicht gelöscht werden.
hab auch schon einen code welcher mir aber nicht die dateien zusammenfügt.
ein kleiner auszug:
Do While fn <> ""
Dim versuch As String
If fNeu <> fn And "versuch.csv" <> fn Then
Kill "D:\excel\Neu\1\" & fn & versuch
ShellAndWait ("D:\excel\Neu\1\test.bat")
Kill "D:\excel\Neu\1\versuch.csv"
Dim Quelle As String, Ziel As String
Quelle = "D:\excel\Neu\1\gesamt.csv"
Ziel = "D:\excel\Neu\1\versuch.csv"
FileCopy Quelle, Ziel
End If
fn = Dir()
Loop
es werden alle dateien bis auf zwei gelöscht die bat-datei wird ausgeführt die datei versuch wird gelöscht und danach wird die datei gesamt zu versuch umbenannt.
die batdatei will er nicht ausführen
mfg
lexika
Antwort 6 von coros
Hallo Lexika,
jetzt kommen wir einer Lösung immer näher. Allerdings fehlt mir noch eine Angabe. Es geht um den Namen der CSV-Dateien, die ausgelesen werden sollen. Wer legt denn den Namen der Datei fest, wird der automatisch vergeben oder vergibt eine Person, z.B. Du, den Namen, so dass man an dem Dateinamen eventuell etwas anpassen kann. Wenn das ein Programm, z.B. ein Loggerprogramm macht, welches denn Dateinamen vergibt, kann man dort eventuell etwas vorgeben, dass die Dateien andere Namen bekommen (als Beispiel 14-Oktober-2005)? Wenn das auch nicht geht, dann führe mir bitte , für die 12 Monate die Dateinamen eines jeden 1. im Monat, also z.B.
01-Jan-05
01-Feb-05
usw.
auf, damit ich weiß, wie die Namen der Dateien aussehen. Auch benötige ich noch die Info, ob vom 1. bis zum 9. eine führende 0 im Dateinamen vorkommt, also 01-Nov-05 oder 1-Nov-05. Außerdem benötige ich noch eine Aussage, ob in dem Verzeichnis nur Daten eines Jahres liegen, oder ob dort Daten mehrerer Jahre liegen.
Wenn ich die Antworten habe, dann kann ich Dir sicherlich bald eine Lösung anbieten.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
jetzt kommen wir einer Lösung immer näher. Allerdings fehlt mir noch eine Angabe. Es geht um den Namen der CSV-Dateien, die ausgelesen werden sollen. Wer legt denn den Namen der Datei fest, wird der automatisch vergeben oder vergibt eine Person, z.B. Du, den Namen, so dass man an dem Dateinamen eventuell etwas anpassen kann. Wenn das ein Programm, z.B. ein Loggerprogramm macht, welches denn Dateinamen vergibt, kann man dort eventuell etwas vorgeben, dass die Dateien andere Namen bekommen (als Beispiel 14-Oktober-2005)? Wenn das auch nicht geht, dann führe mir bitte , für die 12 Monate die Dateinamen eines jeden 1. im Monat, also z.B.
01-Jan-05
01-Feb-05
usw.
auf, damit ich weiß, wie die Namen der Dateien aussehen. Auch benötige ich noch die Info, ob vom 1. bis zum 9. eine führende 0 im Dateinamen vorkommt, also 01-Nov-05 oder 1-Nov-05. Außerdem benötige ich noch eine Aussage, ob in dem Verzeichnis nur Daten eines Jahres liegen, oder ob dort Daten mehrerer Jahre liegen.
Wenn ich die Antworten habe, dann kann ich Dir sicherlich bald eine Lösung anbieten.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 7 von lexika
Hallo coros,
die dateien werden von einem programm generiert und sehen wie folgt aus
07-Okt-05.csv oder 11-Okt-05.csv
täglich kommt eine dazu und die ältere wird gelöscht
also die erste wird umbenannt (z.B. in daten) dann kommt eine zweite hinzu. die erste wird nun gelöscht und die zweite wird an die daten-datei angehängt
das gleiche mit der dritten usw.
habs schon geschaft bis auf das anhängen, da hat er mir die werte immer doppelt geschrieben was zur not auch mit excel korigiert werden könnte.
Gruß und schönes WE
lexika
die dateien werden von einem programm generiert und sehen wie folgt aus
07-Okt-05.csv oder 11-Okt-05.csv
täglich kommt eine dazu und die ältere wird gelöscht
also die erste wird umbenannt (z.B. in daten) dann kommt eine zweite hinzu. die erste wird nun gelöscht und die zweite wird an die daten-datei angehängt
das gleiche mit der dritten usw.
habs schon geschaft bis auf das anhängen, da hat er mir die werte immer doppelt geschrieben was zur not auch mit excel korigiert werden könnte.
Gruß und schönes WE
lexika
Antwort 8 von coros
Hi Lexika,
wie sehen die Dateinamen für die anderen Monate aus -war übrigens in meinem letzten Beitrag eine Frage, auf die ich eine Antwort benötige-? Die Info benötige ich noch.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
wie sehen die Dateinamen für die anderen Monate aus -war übrigens in meinem letzten Beitrag eine Frage, auf die ich eine Antwort benötige-? Die Info benötige ich noch.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 9 von coros
Hi lexika,
ich wage einen ersten versuch. Kopiere nachfolgendes Makro in ein StandardModul Deiner Exceldatei, in die die CSV-Daten eingelesen werden sollen.
Bei obigen Makro wird immer die CSV-Datei, deren Name gleich dem aktuellen Datum ist, geöffnet. Dann wird in dieser Datei die letzte beschriebene Zelle ermittelt und die Daten von A1 bis D letzte beschrieben Zeile kopiert und Zeile in Datei "Gesamt.xls" in die erste freie Zeile in Spalte A eingefügt. Danach wird die CSV-Datei wieder geschlossen und alle Dateien bis auf die aktuelle CSV-Datei und die Datei "Gesamt.xls" werden in dem Verzeichnis "D:\excel\Neu" gelöscht.
Achtung!!!
Bevor Du die Datei testest, mache bitte ein Kopie Deines Verzeichnisses, damit Dir keine Daten verloren gehen.
Ich hoffe, dass ich mit der Lösung schon mal ansatzweise in die richtige Richtung unterwegs bin. Bei Fragen, Problemen oder Änderungswünschen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ich wage einen ersten versuch. Kopiere nachfolgendes Makro in ein StandardModul Deiner Exceldatei, in die die CSV-Daten eingelesen werden sollen.
Option Explicit
Sub CSV_Datei_kopieren()
Dim Letzte_Zeile_Quelle As Long, Pfad As String, Quelldatei As String, _
Zielldatei As String, Monatskürzel As String, Tageszahl As Variant, _
Jahreszahllänge As Variant, Jahreszahl As Variant
Application.ScreenUpdating = False
Monatskürzel = Mid(Format(Now, "dd.mmmm.yy"), 4, 3)
Tageszahl = Mid(Format(Now, "dd.mmmm.yy"), 1, 2)
Jahreszahllänge = Len(Format(Now, "dd.mmmm.yy"))
Jahreszahl = Mid(Format(Now, "dd.mmmm.yy"), Jahreszahllänge - 1, 2)
Zielldatei = ActiveWorkbook.Name
Pfad = "D:\excel\Neu\"
Quelldatei = Dir(Pfad & "*.csv")
Do While Quelldatei <> ""
If Quelldatei = Tageszahl & "-" & Monatskürzel & "-" & Jahreszahl & ".csv" Then
Workbooks.Open Pfad & Quelldatei, local:=True
Letzte_Zeile_Quelle = Workbooks(Quelldatei).Sheets(1). _
Range("A:D").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
Workbooks(Quelldatei).Sheets(1).Range(Workbooks(Quelldatei).Sheets(1).Cells(1, 1), _
Workbooks(Quelldatei).Sheets(1).Cells(Letzte_Zeile_Quelle, 4)).Copy _
Workbooks(Zielldatei).Sheets(1).Cells(Workbooks(Zielldatei).Sheets(1). _
Range("A:D").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1, 1)
Windows(Quelldatei).Close (False)
Else
Kill Pfad & Quelldatei
End If
Quelldatei = Dir()
Loop
End Sub
Bei obigen Makro wird immer die CSV-Datei, deren Name gleich dem aktuellen Datum ist, geöffnet. Dann wird in dieser Datei die letzte beschriebene Zelle ermittelt und die Daten von A1 bis D letzte beschrieben Zeile kopiert und Zeile in Datei "Gesamt.xls" in die erste freie Zeile in Spalte A eingefügt. Danach wird die CSV-Datei wieder geschlossen und alle Dateien bis auf die aktuelle CSV-Datei und die Datei "Gesamt.xls" werden in dem Verzeichnis "D:\excel\Neu" gelöscht.
Achtung!!!
Bevor Du die Datei testest, mache bitte ein Kopie Deines Verzeichnisses, damit Dir keine Daten verloren gehen.
Ich hoffe, dass ich mit der Lösung schon mal ansatzweise in die richtige Richtung unterwegs bin. Bei Fragen, Problemen oder Änderungswünschen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 10 von lexika
Hi coros,
Danke für Deine Hilfe. Hab alles in ein Modul kopiert und mit einem Button verknüpft aber jetzt kommt eine Fehlermeldung "Fehler beim Kompilieren Benanntes Argument nicht gefunden".
Die anderen Monate sehen alle gleich aus
dd-mmm-yy.csv
MfG
lexika
Danke für Deine Hilfe. Hab alles in ein Modul kopiert und mit einem Button verknüpft aber jetzt kommt eine Fehlermeldung "Fehler beim Kompilieren Benanntes Argument nicht gefunden".
Die anderen Monate sehen alle gleich aus
dd-mmm-yy.csv
MfG
lexika
Antwort 11 von coros
Hi Lexika,
welche Zeile in dem Makro wird gelb markiert, wenn der Fehler auftritt. Um das zu sehen, musst Du in dem Fenster, in dem die Fehlermeldung steht, auf den Button "Debuggen" klicken und DIr wird dann der Fehler angezeigt.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
welche Zeile in dem Makro wird gelb markiert, wenn der Fehler auftritt. Um das zu sehen, musst Du in dem Fenster, in dem die Fehlermeldung steht, auf den Button "Debuggen" klicken und DIr wird dann der Fehler angezeigt.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 12 von lexika
Hi coros,
debuggen geht nicht, es gibt nur die möglichkeiten OK und Hilfe. klicke ich auf OK markiert er Sub CSV_Datei_kopieren() gelb und local:= wird blau wie als ob es markiert wäre.
habs jetzt durch ein bischen probieren soweit geschaft das die alte datei gelöscht wird wenn eine neue dazukommt. die reihenfolge dreh ich dann um.
einziges problem daran ist das wenn der button am tag mehrmals gedrückt wird immer wieder daten doppelt in die datei geschrieben werden.
MfG
lexika
debuggen geht nicht, es gibt nur die möglichkeiten OK und Hilfe. klicke ich auf OK markiert er Sub CSV_Datei_kopieren() gelb und local:= wird blau wie als ob es markiert wäre.
habs jetzt durch ein bischen probieren soweit geschaft das die alte datei gelöscht wird wenn eine neue dazukommt. die reihenfolge dreh ich dann um.
einziges problem daran ist das wenn der button am tag mehrmals gedrückt wird immer wieder daten doppelt in die datei geschrieben werden.
MfG
lexika
Antwort 13 von coros
Hi Lexika,
Schreibe mal bitte in der Zeile
Workbooks.Open Pfad & Quelldatei, local:=True
das Komma und local:=True. Der Befehl müsste dann folgendermaßen aussehen:
Workbooks.Open Pfad & Quelldatei
Ich hatte den Code mit Excel2003 erstellt und dann vergessen den Befehl wieder zu löschen. Bei Excel 2000 kommt es durch den Befehl zu einem Fehler und Excel 2003 benötigt den Zusatz zum Öffnen von CSV-Dateien.
Das immer die Zahlen doppelt aufgeführt werden, wenn das Makro mehrfach am Tag ausgeführt wird, ist doch klar, da ja immer die Datei mit dem Namen des aktuellen Tages geöffnet wird. Deshalb hatte ich das ja schon mal gefragt (siehe Antwort 4), ob man nach dem Auslesen die Datei löschen kann. Dann ist die Datei, deren Daten bereits eingelesen wurde nicht mehr vorhanden. Befindet sich dann wieder eine Datei in dem Verzeichnis, beinhaltet diese auf jeden Fall neuere Zahlen.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Schreibe mal bitte in der Zeile
Workbooks.Open Pfad & Quelldatei, local:=True
das Komma und local:=True. Der Befehl müsste dann folgendermaßen aussehen:
Workbooks.Open Pfad & Quelldatei
Ich hatte den Code mit Excel2003 erstellt und dann vergessen den Befehl wieder zu löschen. Bei Excel 2000 kommt es durch den Befehl zu einem Fehler und Excel 2003 benötigt den Zusatz zum Öffnen von CSV-Dateien.
Das immer die Zahlen doppelt aufgeführt werden, wenn das Makro mehrfach am Tag ausgeführt wird, ist doch klar, da ja immer die Datei mit dem Namen des aktuellen Tages geöffnet wird. Deshalb hatte ich das ja schon mal gefragt (siehe Antwort 4), ob man nach dem Auslesen die Datei löschen kann. Dann ist die Datei, deren Daten bereits eingelesen wurde nicht mehr vorhanden. Befindet sich dann wieder eine Datei in dem Verzeichnis, beinhaltet diese auf jeden Fall neuere Zahlen.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 14 von lexika
Hi coros,
hab die änderungen vorgenommen und jetzt bringt er einen Laufzeitfehler "Objektvariable oder With-Blockvariable nicht festgelegt" und markiert diese vier zeilen gelb
Workbooks(Quelldatei).Sheets(1).Range(Workbooks(Quelldatei).Sheets(1).Cells(1, 1), _
Workbooks(Quelldatei).Sheets(1).Cells(Letzte_Zeile_Quelle, 4)).Copy _
Workbooks(Zielldatei).Sheets(1).Cells(Workbooks(Zielldatei).Sheets(1). _
Range("A:D").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1, 1)
MfG
lexika
hab die änderungen vorgenommen und jetzt bringt er einen Laufzeitfehler "Objektvariable oder With-Blockvariable nicht festgelegt" und markiert diese vier zeilen gelb
Workbooks(Quelldatei).Sheets(1).Range(Workbooks(Quelldatei).Sheets(1).Cells(1, 1), _
Workbooks(Quelldatei).Sheets(1).Cells(Letzte_Zeile_Quelle, 4)).Copy _
Workbooks(Zielldatei).Sheets(1).Cells(Workbooks(Zielldatei).Sheets(1). _
Range("A:D").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1, 1)
MfG
lexika
Antwort 15 von coros
Hi lexika,
also bei mir funktioniert das obige Makro. Besteht die Möglichkeit mir die Datei und ein oder zwei CSV-Dateien mal zukommen zu lassen, damit ich das mal mit Deinen Dateien nachvollziehen kann? Wenn das geht, dann schicke die Datei an meine E-Mail:coros@excelbeispiele.de. Binde aber bitte in der Betreffzeile das Wort Supportnet und Deinen Nicknamen, unter dem Du hier postest, mit ein, damit ich weiß, dass die E-Mail von Dir stammt, da ich alle Mails, deren Absender ich nicht kenne ungelesen lösche.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
also bei mir funktioniert das obige Makro. Besteht die Möglichkeit mir die Datei und ein oder zwei CSV-Dateien mal zukommen zu lassen, damit ich das mal mit Deinen Dateien nachvollziehen kann? Wenn das geht, dann schicke die Datei an meine E-Mail:coros@excelbeispiele.de. Binde aber bitte in der Betreffzeile das Wort Supportnet und Deinen Nicknamen, unter dem Du hier postest, mit ein, damit ich weiß, dass die E-Mail von Dir stammt, da ich alle Mails, deren Absender ich nicht kenne ungelesen lösche.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 16 von lexika
Hi coros,
hab denn grund gefunden warums nicht ging.
habe zum testen die komplette tabelle gelöscht und es gab ne fehlermeldung. ohne löschen der ersten zeile schreibt er die daten darunter.
das problem bei den eingelesenen werten ist aber das sie nicht in vier spalten geschrieben werden.
die cvs-datei ist beim öffnen in vier spalten aufgeteilt aber über das importieren steht alles in einer.
kannst du mir vielleicht sagen wo ich folgendes hinschreiben müsste? (mit dem recorder für ne andere datei aufgenommen)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;D:\excel\Neu\1\versuch.csv" _
, Destination:=Range("F20"))
.Name = "Sensor_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileDecimalSeparator = "."
.Refresh BackgroundQuery:=False
End With
MfG
lexika
hab denn grund gefunden warums nicht ging.
habe zum testen die komplette tabelle gelöscht und es gab ne fehlermeldung. ohne löschen der ersten zeile schreibt er die daten darunter.
das problem bei den eingelesenen werten ist aber das sie nicht in vier spalten geschrieben werden.
die cvs-datei ist beim öffnen in vier spalten aufgeteilt aber über das importieren steht alles in einer.
kannst du mir vielleicht sagen wo ich folgendes hinschreiben müsste? (mit dem recorder für ne andere datei aufgenommen)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;D:\excel\Neu\1\versuch.csv" _
, Destination:=Range("F20"))
.Name = "Sensor_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileDecimalSeparator = "."
.Refresh BackgroundQuery:=False
End With
MfG
lexika
Antwort 17 von coros
Hi Lexika,
wenn Du als Trennzeichen ein Semikolon hast, dann steht das nirgends in dem Code. Dass ist ein Problem bei Excel. Beim Öffnen der CSV Datei über ein Makro schaltet Excel auf den US Standard um. Da im US Standard das Trennzeichen ein Komma ist, erkennt er ein z.B. Semikolon nicht als Trennzeichen an. Da muss man in der Registry (Startbutton => Ausführen auswählen => regedit eingeben) unter folgendem Pfad
HKCU\Software\Microsoft\Office\9.0\Excel\Options
ein DWORD hinzufügen, das den Namen VBAAlwaysLoadUS und den Wert 0 bekommen muss. Ansonsten geht das öffnen über ein Makro nicht.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
wenn Du als Trennzeichen ein Semikolon hast, dann steht das nirgends in dem Code. Dass ist ein Problem bei Excel. Beim Öffnen der CSV Datei über ein Makro schaltet Excel auf den US Standard um. Da im US Standard das Trennzeichen ein Komma ist, erkennt er ein z.B. Semikolon nicht als Trennzeichen an. Da muss man in der Registry (Startbutton => Ausführen auswählen => regedit eingeben) unter folgendem Pfad
HKCU\Software\Microsoft\Office\9.0\Excel\Options
ein DWORD hinzufügen, das den Namen VBAAlwaysLoadUS und den Wert 0 bekommen muss. Ansonsten geht das öffnen über ein Makro nicht.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 18 von lexika
HI coros,
trotzdem vielen Dank für Deine Hilfe.
Hättest Du vielleicht einen Tipp wie ich die aktuelle Datei behalten kann aber in der gesamtdatei keine doppelten Werte vorkommen?
Würde es gehen beide zu öffnen und zu vergleichen? Sind dann in der aktuellen Werte, die in der gesamtdatei nicht sind, diese kopiert werden?
MfG
lexika
trotzdem vielen Dank für Deine Hilfe.
Hättest Du vielleicht einen Tipp wie ich die aktuelle Datei behalten kann aber in der gesamtdatei keine doppelten Werte vorkommen?
Würde es gehen beide zu öffnen und zu vergleichen? Sind dann in der aktuellen Werte, die in der gesamtdatei nicht sind, diese kopiert werden?
MfG
lexika
Antwort 19 von coros
Hi lexika,
ja, man könnte beide Dateien miteinander durch ein Makro vergleichen lassen. Allerdings kann ich Dir jetzt nicht auf die schnelle ein Makro erstellen, da ich außer Haus muss. Du könntest Dir aber auf meiner HP in der Rubrik Beispieldateien und dort dann in das Beispiel 47 mal ansehen. Dort stelle ich dazu eine Beispieldatei zur Verfügung, die Duplikate sucht. Eventuell hilft Dir das ja weiter. Ansonsten komme ich erst morgen dazu, Dir da was zu erstellen.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ja, man könnte beide Dateien miteinander durch ein Makro vergleichen lassen. Allerdings kann ich Dir jetzt nicht auf die schnelle ein Makro erstellen, da ich außer Haus muss. Du könntest Dir aber auf meiner HP in der Rubrik Beispieldateien und dort dann in das Beispiel 47 mal ansehen. Dort stelle ich dazu eine Beispieldatei zur Verfügung, die Duplikate sucht. Eventuell hilft Dir das ja weiter. Ansonsten komme ich erst morgen dazu, Dir da was zu erstellen.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 20 von lexika
HI coros,
hab das Bsp. von Deiner HP genommen, eingefügt und hab dazu aber ein paar fragen. Ist es möglich die doppelten werte anstatt zu markieren einfach zu löschen und ist es danach möglich die restlichen werte falls vorhanden unter den letzten in spalte A zu schreiben? Braucht es immer so lange bis alles verglichen wird oder hängt das von spalte B (Tagesdaten) ab?
Folgend der Code wie ich in eingefügt habe (die markierungen sind noch die alten aber der code markiert die doppeten in spalte A).
Option Explicit
Public Sub Makro1()
´Variablen deklarieren
Dim Suchname As String, Fundname As Range, letzte_Zeile_Tab1 As Long, _
letzte_Zeile_Tab2 As Long, Wiederholungen As Long, Addresse As String, _
gefundene_Zeile As Long
ChDir "C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1"
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1\07-Okt-05.csv"
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1\versuch.csv"
ActiveWindow.WindowState = xlNormal
Windows("07-Okt-05.csv").Activate
Columns("A:A").Select
Selection.Copy
Windows("versuch.csv").Activate
Columns("B:B").Select
ActiveSheet.Paste
Windows("07-Okt-05.csv").Activate
ActiveWindow.Close
´Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
´Letzte beschriebene Zeile in Blatt "Namensliste 1" Spalte A ermitteln und
´in Variable "letzte_Zeile_Tab1" speichern
letzte_Zeile_Tab1 = Sheets("versuch").Range("A65536").End(xlUp).Row
´Letzte beschriebene Zeile in Blatt "Namensliste 2" Spalte A ermitteln und
´in Variable "letzte_Zeile_Tab2" speichern
letzte_Zeile_Tab2 = Sheets("versuch").Range("B65536").End(xlUp).Row
´For/Next Schleife zum erfasse des Suchbegriffes in Blatt "Namensliste 1"
For Wiederholungen = 2 To letzte_Zeile_Tab1
´Den Namen aus der Zelle, die durch die For/Next Schleife angesprochen wird,
´auslesen und in Variable "Suchname" speichern
Suchname = Sheets("versuch").Cells(Wiederholungen, 1)
´Den Namen aus der Variablen "Suchname" mit dem Bereich A2:A letzte Zeile Tab2
´in Blatt "Namensliste 2" vergleichen
With Sheets("versuch").Range("B1:B" & letzte_Zeile_Tab2)
Set Fundname = .Find(What:=Suchname, LookIn:=xlValues)
´Wenn Übereinstimmung gefunden, dann...
If Not Fundname Is Nothing Then
´... Hintergrundfarbe der gefundenen Zelle in Blatt "Namensliste 1" in
´Farbe grün ändern und...
Sheets("Namensliste 1").Cells(Wiederholungen, 1).Interior.ColorIndex = 4
´... Hintergrundfarbe der gefundenen Zelle in Blatt "Namensliste 2" in
´Farbe grün ändern und...
Sheets("Namensliste 2").Cells(gefundene_Zeile, 1).Interior.ColorIndex = 4
Do
´...nächste Übereinstimmung suchen
Set Fundname = .FindNext(Fundname)
Loop While Not Fundname Is Nothing And Fundname.Address <> Fundname.Address
´Abfrage Ende
End If
End With
´Nächsten Schleifendurchlauf starten
Next
´ActiveWorkbook.Save
´ActiveWindow.Close
´ActiveWindow.WindowState = xlMaximized
´Range("E20").Select
End Sub
hab das Bsp. von Deiner HP genommen, eingefügt und hab dazu aber ein paar fragen. Ist es möglich die doppelten werte anstatt zu markieren einfach zu löschen und ist es danach möglich die restlichen werte falls vorhanden unter den letzten in spalte A zu schreiben? Braucht es immer so lange bis alles verglichen wird oder hängt das von spalte B (Tagesdaten) ab?
Folgend der Code wie ich in eingefügt habe (die markierungen sind noch die alten aber der code markiert die doppeten in spalte A).
Option Explicit
Public Sub Makro1()
´Variablen deklarieren
Dim Suchname As String, Fundname As Range, letzte_Zeile_Tab1 As Long, _
letzte_Zeile_Tab2 As Long, Wiederholungen As Long, Addresse As String, _
gefundene_Zeile As Long
ChDir "C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1"
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1\07-Okt-05.csv"
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1\versuch.csv"
ActiveWindow.WindowState = xlNormal
Windows("07-Okt-05.csv").Activate
Columns("A:A").Select
Selection.Copy
Windows("versuch.csv").Activate
Columns("B:B").Select
ActiveSheet.Paste
Windows("07-Okt-05.csv").Activate
ActiveWindow.Close
´Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
´Letzte beschriebene Zeile in Blatt "Namensliste 1" Spalte A ermitteln und
´in Variable "letzte_Zeile_Tab1" speichern
letzte_Zeile_Tab1 = Sheets("versuch").Range("A65536").End(xlUp).Row
´Letzte beschriebene Zeile in Blatt "Namensliste 2" Spalte A ermitteln und
´in Variable "letzte_Zeile_Tab2" speichern
letzte_Zeile_Tab2 = Sheets("versuch").Range("B65536").End(xlUp).Row
´For/Next Schleife zum erfasse des Suchbegriffes in Blatt "Namensliste 1"
For Wiederholungen = 2 To letzte_Zeile_Tab1
´Den Namen aus der Zelle, die durch die For/Next Schleife angesprochen wird,
´auslesen und in Variable "Suchname" speichern
Suchname = Sheets("versuch").Cells(Wiederholungen, 1)
´Den Namen aus der Variablen "Suchname" mit dem Bereich A2:A letzte Zeile Tab2
´in Blatt "Namensliste 2" vergleichen
With Sheets("versuch").Range("B1:B" & letzte_Zeile_Tab2)
Set Fundname = .Find(What:=Suchname, LookIn:=xlValues)
´Wenn Übereinstimmung gefunden, dann...
If Not Fundname Is Nothing Then
´... Hintergrundfarbe der gefundenen Zelle in Blatt "Namensliste 1" in
´Farbe grün ändern und...
Sheets("Namensliste 1").Cells(Wiederholungen, 1).Interior.ColorIndex = 4
´... Hintergrundfarbe der gefundenen Zelle in Blatt "Namensliste 2" in
´Farbe grün ändern und...
Sheets("Namensliste 2").Cells(gefundene_Zeile, 1).Interior.ColorIndex = 4
Do
´...nächste Übereinstimmung suchen
Set Fundname = .FindNext(Fundname)
Loop While Not Fundname Is Nothing And Fundname.Address <> Fundname.Address
´Abfrage Ende
End If
End With
´Nächsten Schleifendurchlauf starten
Next
´ActiveWorkbook.Save
´ActiveWindow.Close
´ActiveWindow.WindowState = xlMaximized
´Range("E20").Select
End Sub
Antwort 21 von lexika
HI coros,
hab das Bsp. von Deiner HP genommen, eingefügt und hab dazu aber ein paar fragen. Ist es möglich die doppelten werte anstatt zu markieren einfach zu löschen und ist es danach möglich die restlichen werte falls vorhanden unter den letzten in spalte A zu schreiben? Braucht es immer so lange bis alles verglichen wird oder hängt das von spalte B (Tagesdaten) ab?
Folgend der Code wie ich in eingefügt habe (die markierungen sind noch die alten aber der code markiert die doppeten in spalte A).
Option Explicit
Public Sub Makro1()
´Variablen deklarieren
Dim Suchname As String, Fundname As Range, letzte_Zeile_Tab1 As Long, _
letzte_Zeile_Tab2 As Long, Wiederholungen As Long, Addresse As String, _
gefundene_Zeile As Long
ChDir "C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1"
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1\07-Okt-05.csv"
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1\versuch.csv"
ActiveWindow.WindowState = xlNormal
Windows("07-Okt-05.csv").Activate
Columns("A:A").Select
Selection.Copy
Windows("versuch.csv").Activate
Columns("B:B").Select
ActiveSheet.Paste
Windows("07-Okt-05.csv").Activate
ActiveWindow.Close
´Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
´Letzte beschriebene Zeile in Blatt "Namensliste 1" Spalte A ermitteln und
´in Variable "letzte_Zeile_Tab1" speichern
letzte_Zeile_Tab1 = Sheets("versuch").Range("A65536").End(xlUp).Row
´Letzte beschriebene Zeile in Blatt "Namensliste 2" Spalte A ermitteln und
´in Variable "letzte_Zeile_Tab2" speichern
letzte_Zeile_Tab2 = Sheets("versuch").Range("B65536").End(xlUp).Row
´For/Next Schleife zum erfasse des Suchbegriffes in Blatt "Namensliste 1"
For Wiederholungen = 2 To letzte_Zeile_Tab1
´Den Namen aus der Zelle, die durch die For/Next Schleife angesprochen wird,
´auslesen und in Variable "Suchname" speichern
Suchname = Sheets("versuch").Cells(Wiederholungen, 1)
´Den Namen aus der Variablen "Suchname" mit dem Bereich A2:A letzte Zeile Tab2
´in Blatt "Namensliste 2" vergleichen
With Sheets("versuch").Range("B1:B" & letzte_Zeile_Tab2)
Set Fundname = .Find(What:=Suchname, LookIn:=xlValues)
´Wenn Übereinstimmung gefunden, dann...
If Not Fundname Is Nothing Then
´... Hintergrundfarbe der gefundenen Zelle in Blatt "Namensliste 1" in
´Farbe grün ändern und...
Sheets("Namensliste 1").Cells(Wiederholungen, 1).Interior.ColorIndex = 4
´... Hintergrundfarbe der gefundenen Zelle in Blatt "Namensliste 2" in
´Farbe grün ändern und...
Sheets("Namensliste 2").Cells(gefundene_Zeile, 1).Interior.ColorIndex = 4
Do
´...nächste Übereinstimmung suchen
Set Fundname = .FindNext(Fundname)
Loop While Not Fundname Is Nothing And Fundname.Address <> Fundname.Address
´Abfrage Ende
End If
End With
´Nächsten Schleifendurchlauf starten
Next
´ActiveWorkbook.Save
´ActiveWindow.Close
´ActiveWindow.WindowState = xlMaximized
´Range("E20").Select
End Sub
MfG
lexika
hab das Bsp. von Deiner HP genommen, eingefügt und hab dazu aber ein paar fragen. Ist es möglich die doppelten werte anstatt zu markieren einfach zu löschen und ist es danach möglich die restlichen werte falls vorhanden unter den letzten in spalte A zu schreiben? Braucht es immer so lange bis alles verglichen wird oder hängt das von spalte B (Tagesdaten) ab?
Folgend der Code wie ich in eingefügt habe (die markierungen sind noch die alten aber der code markiert die doppeten in spalte A).
Option Explicit
Public Sub Makro1()
´Variablen deklarieren
Dim Suchname As String, Fundname As Range, letzte_Zeile_Tab1 As Long, _
letzte_Zeile_Tab2 As Long, Wiederholungen As Long, Addresse As String, _
gefundene_Zeile As Long
ChDir "C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1"
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1\07-Okt-05.csv"
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\haustein\Desktop\Neuer Ordner\1\versuch.csv"
ActiveWindow.WindowState = xlNormal
Windows("07-Okt-05.csv").Activate
Columns("A:A").Select
Selection.Copy
Windows("versuch.csv").Activate
Columns("B:B").Select
ActiveSheet.Paste
Windows("07-Okt-05.csv").Activate
ActiveWindow.Close
´Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
´Letzte beschriebene Zeile in Blatt "Namensliste 1" Spalte A ermitteln und
´in Variable "letzte_Zeile_Tab1" speichern
letzte_Zeile_Tab1 = Sheets("versuch").Range("A65536").End(xlUp).Row
´Letzte beschriebene Zeile in Blatt "Namensliste 2" Spalte A ermitteln und
´in Variable "letzte_Zeile_Tab2" speichern
letzte_Zeile_Tab2 = Sheets("versuch").Range("B65536").End(xlUp).Row
´For/Next Schleife zum erfasse des Suchbegriffes in Blatt "Namensliste 1"
For Wiederholungen = 2 To letzte_Zeile_Tab1
´Den Namen aus der Zelle, die durch die For/Next Schleife angesprochen wird,
´auslesen und in Variable "Suchname" speichern
Suchname = Sheets("versuch").Cells(Wiederholungen, 1)
´Den Namen aus der Variablen "Suchname" mit dem Bereich A2:A letzte Zeile Tab2
´in Blatt "Namensliste 2" vergleichen
With Sheets("versuch").Range("B1:B" & letzte_Zeile_Tab2)
Set Fundname = .Find(What:=Suchname, LookIn:=xlValues)
´Wenn Übereinstimmung gefunden, dann...
If Not Fundname Is Nothing Then
´... Hintergrundfarbe der gefundenen Zelle in Blatt "Namensliste 1" in
´Farbe grün ändern und...
Sheets("Namensliste 1").Cells(Wiederholungen, 1).Interior.ColorIndex = 4
´... Hintergrundfarbe der gefundenen Zelle in Blatt "Namensliste 2" in
´Farbe grün ändern und...
Sheets("Namensliste 2").Cells(gefundene_Zeile, 1).Interior.ColorIndex = 4
Do
´...nächste Übereinstimmung suchen
Set Fundname = .FindNext(Fundname)
Loop While Not Fundname Is Nothing And Fundname.Address <> Fundname.Address
´Abfrage Ende
End If
End With
´Nächsten Schleifendurchlauf starten
Next
´ActiveWorkbook.Save
´ActiveWindow.Close
´ActiveWindow.WindowState = xlMaximized
´Range("E20").Select
End Sub
MfG
lexika
Antwort 22 von coros
Hallo Lexika,
also ich kann mir beim besten Willen nicht vorstellen, das der obige Code so wie Du ihn hier gepostet hast, bei Dir funktioniert. Aber ich kenne auch Deine Datei nicht. Was ich mal wissen müsste wäre, wie heißt die Datei, in die die Werte kopiert werden sollen. Ist das die Datei "Versuch"?
Wobei ich ehrlich gesagt jetzt gar nicht mehr verstehe, was Du eigentlich möchtest. Hast Du den Eintrag in der Registry hinzugefügt, damit Du CSV Dateien über ein Makro öffnen kannst? Wenn nicht, warum nicht? Denn dann kann man das alles etwas leichter relaisieren, als mit dem Code, den Du hier postest. Auch habe ich Dir angeboten, mir mal Deine Datei und ein bis zwei CSV Dateien zu schicken, damit ich Dir das was erstellen kann. Allerdings habe ich so den Anschein, dass Du gewisse Sachen ignorierst. Allerdings wird in der Weise, wie es im Moment läuft, die Lösung nur unnötig in die Länge gezogen.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
also ich kann mir beim besten Willen nicht vorstellen, das der obige Code so wie Du ihn hier gepostet hast, bei Dir funktioniert. Aber ich kenne auch Deine Datei nicht. Was ich mal wissen müsste wäre, wie heißt die Datei, in die die Werte kopiert werden sollen. Ist das die Datei "Versuch"?
Wobei ich ehrlich gesagt jetzt gar nicht mehr verstehe, was Du eigentlich möchtest. Hast Du den Eintrag in der Registry hinzugefügt, damit Du CSV Dateien über ein Makro öffnen kannst? Wenn nicht, warum nicht? Denn dann kann man das alles etwas leichter relaisieren, als mit dem Code, den Du hier postest. Auch habe ich Dir angeboten, mir mal Deine Datei und ein bis zwei CSV Dateien zu schicken, damit ich Dir das was erstellen kann. Allerdings habe ich so den Anschein, dass Du gewisse Sachen ignorierst. Allerdings wird in der Weise, wie es im Moment läuft, die Lösung nur unnötig in die Länge gezogen.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

