Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Inhalt einer Zelle in Textdatei schreiben lesen

Inhalt einer Zelle in Textdatei schreiben lesen
18.10.2016 23:35:14
alberto
Hallo
ich bin "Anfänger" in VBA und suche eine Lösung für folgendes Problem,
ich möchte den Inhalte von Zelle C6 in eine Textdatei schreiben bzw. kopieren.
Direkt nach der Eingabe von der Kundennummer in Zelle „C6“ muss die Nummer kopiert werden.
Nach Eingabe von 10 Kundennummern muss die Textdatei so aussehen
100000
200000
300000
400000
500000
600000
700000
800000
900000
Und ich möchte nach der Eingabe der Kundennummer, dass die Textdatei gelesen wird und falls eine wiederholte Kundennummer gibt muss der Code ein MsgBox mit „Diese Kundenummer wurde schon kopiert“.
Mit den unteren Code bin ich nicht weitergekommen.
Sub Export()
Open "C:\Users\Root\Desktop\Test2\export.txt" For Output As #1
For x = 1 To 1
s = Range("C6")
If Len(s) = 6 Then
t = Range("C6")
Print #1, t
End If
Next x
Close #1
End Sub

dafür gibt es sicherlich eine einfache Lösung, leider bin ich über Suchfunktion noch nicht fündig geworden, vielleicht könnt Ihr mir ja weiterhelfen?
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt einer Zelle in Textdatei schreiben lesen
18.10.2016 23:57:09
Martin
Hallo alberto,
den folgenden Code musst du in das VBA-Modul der betreffenden Tabelle kopieren:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strValue As String
Dim strLineTXT As String
Dim strFilePath As String
If Target.Address  "$C$6" Then Exit Sub
strFilePath = "C:\Users\Root\Desktop\Test2\export.txt" 'Pfad anpassen!
strValue = Range("C6").Value
If Dir(strFilePath)  "" Then
Open strFilePath For Input As #1
Do
Line Input #1, strLineTXT
If Trim(strLineTXT) = strValue Then
MsgBox "Diese Kundenummer wurde schon kopiert!", vbExclamation + vbOKOnly, " _
Warnung"
Close #1
Exit Sub
End If
Loop Until EOF(1)
Close #1
End If
Open strFilePath For Append As #1
Print #1, strValue
Close #1
End Sub
Viele Grüße
Martin
Anzeige
AW: Inhalt einer Zelle in Textdatei schreiben lesen
19.10.2016 16:17:56
alberto
Hallo,
es tut mir leid aber ich eine blöde Frage.
Als ich versucht habe, den Code zu komplieren, wird ein Makrofenster angezeigt. Siehe das Bild im Anhang.
Warum ist das so? normalerweise muss das Fenster nicht angezeit, oder bin ich falsch.
Für jede Erklärung bin ich sehr dankbar.
Anhang:
Userbild
Anzeige
AW: Inhalt einer Zelle in Textdatei schreiben lesen
19.10.2016 17:01:23
Martin
Hallo Alberto,
es gibt keine blöden Fragen. Das Makro kommt nicht in Modul1, sondern in die Tabelle, wo sich die betreffende Zelle C6 befindet.
Viele Grüße
Martin
Userbild
AW: Inhalt einer Zelle in Textdatei schreiben lesen
19.10.2016 17:16:38
alberto
Hallo Martin,
ich habe Ihren Code in das VBA-Modul der betreffenden Tabelle kopiert und als ich kompelieren wollte, wird das Makrofenster angezeigt. Ich bin immerhin ein Anfänger und hoffe, dass Sie mir das kurz erklären.
Anzeige
AW: Inhalt einer Zelle in Textdatei schreiben lesen
19.10.2016 17:33:23
Martin
Hallo alberto,
bei dem Makro handelt es sich um ein Event-Makro. Das bedeutet, dass das Makro automatisch ausgelöst wird wenn eine Änderung im Tabellenblatt erfolgt. Darum auch der Name "Worksheet_Change", das heißt übersetzt "Arbeitsblatt_Veränderung". Das Makro muss (und kann) nicht manuell im VBA-Editor aufgerufen und ausgeführt werden. Einfach etwas in die Zelle C6 schreiben, der Rest geschieht von allein ;-)
Viele Grüße
Martin
Anzeige
Wie wäre es mit einer Rückmeldung?!
19.10.2016 20:09:12
Martin
Hallo alberto,
ehrlich gesagt ist es keine feine Art den Helfern im Forum keine Rückmeldung zu geben, ob ihre Arbeit zum gewünschten Ziel geführt hat und alles richtig klappt. Wenn Helfer Zeit investieren fremder Leute Probleme zu lösen, dann sollten diese Leute wenigstens die Zeit aufbringen ihren Helfern zu antworten!
Viele Grüße
Martin
Anzeige
AW: Wie wäre es mit einer Rückmeldung?!
19.10.2016 21:55:30
alberto
Hallo Martin,
sorry, dass ich erst gemeldet habe, aber ich war vertieft beim Lernen.
Ich Danke Ihnen sehr vielmals. Der Code hat super geklappt :-) genauso wie ich mir vorgestellt habe.
Ich habe wirklich seit 2 Tagen in Google nach einem geeigneten Code gesucht aber vergeblich. Da ich Anfänger bin, habe ich leider nicht so viele Ahnung, aber ich lerne fleißig :-)
Hoffentlich gibt es bald eine gelegenheit bei dem ich mich revanchieren kann :-)
Danke nochmal und eine gute ruhige Nacht wünsche ich Ihnen.
Anzeige
AW: Wie wäre es mit einer Rückmeldung?!
20.10.2016 09:23:01
Martin
Hallo alberto,
ich danke dir für das Feedback. Noch als kleiner Hinweis, falls bei der Eingabe der Kundennummern in Zelle C6 die Zelle ausgewählt bleiben soll: Eränze eine Zeile über dem End Sub mit Target.Select.
Viele Grüße
Martin
AW: Wie wäre es mit einer Rückmeldung?!
20.10.2016 20:24:14
alberto
Das ist ein sehr guter Hinweis :-)
Ich danke Ihnen sehr.
Sie sind wirklich der Beste.
LG
alberto
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Inhalt einer Zelle in eine Textdatei schreiben und lesen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und navigiere zu der Tabelle, in der sich die Zelle C6 befindet.

  2. Öffne den VBA-Editor mit ALT + F11.

  3. Erstelle ein neues Modul für das entsprechende Arbeitsblatt, indem du im Projekt-Explorer mit der rechten Maustaste auf das Arbeitsblatt klickst und "Code anzeigen" wählst.

  4. Füge den folgenden Code in das Modul ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim strValue As String
       Dim strLineTXT As String
       Dim strFilePath As String
       If Target.Address <> "$C$6" Then Exit Sub
       strFilePath = "C:\Users\Root\Desktop\Test2\export.txt" 'Pfad anpassen!
       strValue = Range("C6").Value
       If Dir(strFilePath) <> "" Then
           Open strFilePath For Input As #1
           Do
               Line Input #1, strLineTXT
               If Trim(strLineTXT) = strValue Then
                   MsgBox "Diese Kundenummer wurde schon kopiert!", vbExclamation + vbOKOnly, "Warnung"
                   Close #1
                   Exit Sub
               End If
           Loop Until EOF(1)
           Close #1
       End If
       Open strFilePath For Append As #1
       Print #1, strValue
       Close #1
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Gib eine Kundennummer in die Zelle C6 ein. Der Code wird automatisch ausgeführt und die Nummer wird in die Textdatei geschrieben.


Häufige Fehler und Lösungen

  • Makrofenster wird angezeigt: Stelle sicher, dass du den Code im richtigen Modul (dem des Arbeitsblatts mit C6) eingefügt hast. Der Code sollte nicht in ein allgemeines Modul eingefügt werden.

  • Textdatei wird nicht erstellt: Überprüfe den angegebenen Pfad. Stelle sicher, dass der Ordner existiert und du die Berechtigung hast, in diesen Ordner zu schreiben.


Alternative Methoden

Eine Alternative zum VBA-Ansatz ist die Verwendung von Power Query oder Excel-Funktionen, um Daten zu exportieren. Diese Methoden sind jedoch weniger flexibel und bieten nicht die Möglichkeit, direkt auf die Eingabe in Zelle C6 zu reagieren.


Praktische Beispiele

Angenommen, du möchtest eine Liste von Kundennummern in einer Textdatei speichern. Mit dem obigen VBA-Code wird jede neue Nummer, die in C6 eingegeben wird, automatisch in die Datei export.txt geschrieben, solange sie nicht bereits enthalten ist.

Hier ist ein Beispiel für den Inhalt der Datei nach der Eingabe von 10 Kundennummern:

100000
200000
300000
400000
500000
600000
700000
800000
900000

Tipps für Profis

  • Automatisierung verbessern: Um die Benutzeroberfläche zu verbessern, kannst du Target.Select vor End Sub hinzufügen, damit die Zelle C6 nach der Eingabe ausgewählt bleibt.

  • Erweiterte Validierung: Du kannst den Code erweitern, um sicherzustellen, dass nur numerische Werte als Kundennummern akzeptiert werden, was besonders bei der Verwendung von vba in textdatei schreiben nützlich sein kann.


FAQ: Häufige Fragen

1. Wie kann ich den Pfad zur Textdatei ändern? Um den Pfad zu ändern, bearbeite die Zeile strFilePath = "C:\Users\Root\Desktop\Test2\export.txt" und gib den gewünschten Pfad an.

2. Was passiert, wenn ich einen leeren Wert in C6 eingebe? Der Code ignoriert leere Eingaben und schreibt nichts in die Textdatei.

3. Kann ich mehrere Zellen gleichzeitig überwachen? Ja, du kannst die If-Bedingung anpassen, um mehrere Zellen zu berücksichtigen, z.B. If Not Intersect(Target, Me.Range("C6,D6,E6")) Is Nothing Then.

4. Welche Excel-Version wird benötigt? Der Code funktioniert in Excel 2010 und höher, da VBA in diesen Versionen vollständig unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige