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

Einfache Textdatei erstellen

Einfache Textdatei erstellen
Tim
Hallo,
ich habe eine Tabelle, bei der sich auf Blatt5 immer nur ein Wert ändert, dieser jedoch sehr oft (Eingabe erfolgt in Zelle G7.
Könnt Ihr mir sagen, wie ich hierzu eine Textdatei erstelle, in der alle Eingaben in G7 auf diesem Blatt protokoliert (könnte z.B. bei Workbook_Close geschehen) ?
Mein Probleme bzw. Fragen dabei sind folgende:
1) Wie kann ich in VBA einen anderen Ordner als Speicherort für das Textfile definieren, als den der aktuellen Tabelle ?
2) Wie lasse ich eine separate Textdatei pro Anwender erstellen (Login über Environ auslesen und dann ?) ?
3) Wie stelle ich sicher, dass ggf. hierbei zuvor erzeugte Textdateien für einen Anwender weiter aktualisiert werden, so dass nicht bei jedem Öffnen der Tabelle automatisch immer eine neue Textdatei erstellt wird ?
Gibt es hier jemanden, der sich damit auskennt ?
Rückmeldung garantiert.
VG, Tim
AW: Einfache Textdatei erstellen
09.04.2012 15:42:12
Tim
Hallo Hajo,
vielen Dank.
Das habe ich über die Suche auch gefunden, es enthält aber (soweit ich gesehen habe), keine Lösung für meine Fragen, da hier die Textdatei im gleichen Ordner wie die Tabelle gespeichert wird und nach meinem Verständnis nur die letzte gespeicherte Änderung in der Textdatei erfasst wird, jedoch nicht alle Eingaben in G7, die während der Nutzung der Tabelle erfolgen.
Hast Du dazu eine Idee ?
VG, Tim
Anzeige
AW: Einfache Textdatei erstellen
09.04.2012 15:45:46
Hajo_Zi
Hallo Tim,
also ich hätte ews so gelesen das alle Änderungen gespeichert werden und den Ablageort kannst Du ja im Code ergänzen.
Gruß Hajo
AW: Einfache Textdatei erstellen
09.04.2012 16:15:14
Tim
Hallo Hajo,
die Datei, die Tino hier als letztes hochgeladen hat, speichert bei mir im Test nur den jeweils letzten Eintrag, d.h. die Änderung, die beim Speichern bzw. Schließen zu sehen ist.
Überschreibt man die gleiche Zelle jedoch mehrfach bevor man speichert, gehen die ersten Änderungen verloren.
Der Unterschied hier ist außerdem, dass die Änderungen eines ganzen Blattes berücksichtigt werden, wobei ich nur eine einzige Zelle protokollieren müsste.
VG, Tim
Anzeige
AW: Einfache Textdatei erstellen
09.04.2012 16:26:05
Hajo_Zi
Hallo Tim,
ich hätte ja den Code von Christian den Vorrang gegeben und dort die Überprüfung nur auf eine Zelle zu machen dürfte ja kein Problem sein, wenn man sich so eine komplizierte Aufgabe vornimmt.
Den Code von Tino habe ich mir nicht angesehen. Einfach sich dort in den Beitrag einklinken.
Gruß Hajo
AW: Einfache Textdatei erstellen
09.04.2012 16:45:00
Hajo_Zi
Halo Tim,
auf g7 angepast, den Ordner hast Du ja nicht mitgeteilt.
Option Explicit
' https://www.herber.de/ _
forum/archiv/1256to1260/t1258105.htm
' Code von Christian
Dim mstrOld As String
Dim RaBereich As Range
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strDatei As String, strText As String
Dim intFile As Integer, rng As Range
Const strDELIM As String = "|"      'Logfile Delimiter - ggf. anpassen
intFile = FreeFile
With ThisWorkbook
strDatei = .Path & "\LogBuch_" & Replace(.Name, ".xls", "") & ".txt"
End With
Open strDatei For Append As #intFile
If LOF(intFile) = 0 Then
strText = "Zeistempel|User|Zelle|alter-Wert|neuer-Wert|"
Print #intFile, strText
End If
If Range("G7")  mstrOld Then
strText = _
Format(Now, "YYYYMMDD-hhmmss") & strDELIM & _
Environ("username") & strDELIM & _
"G7" & strDELIM & _
mstrOld & strDELIM & _
Range("G7") & strDELIM
Print #intFile, strText
End If
Close #intFile
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set RaBereich = Intersect(Range("G7"), Range(Target.Address))
If Not RaBereich Is Nothing Then
mstrOld = Range("G7")
End If
End Sub
Gruß Hajo
Anzeige
AW: Einfache Textdatei erstellen
09.04.2012 17:29:12
Tim
Hallo Hajo,
vielen Dank - das war eine große Hilfe !
Ich habe es jetzt so angepasst, wie ich es brauche und das klappt sehr gut, ich habe jedoch noch nicht herausgefunden, wie ich folgendes umsetzen kann:
1) Die Textfiles sollen z.B. in folgendem Ordner gespeichert werden und zwar jeweils unter dem Name des Anwenders mit dem Zusatz "_SearchLog", also z.B. "abcd_SearchLog":
C:\Users\Notebook\Desktop\My Documents\SearchLogs".
2) Wie kann ich unterhalb der Überschrift im Textfile noch eine Leer- oder Sonderzeichen-Zeile einfügen, um das Ganze etwas abzugrenzen ?
Option Explicit
' https://www.herber.de/ _
forum/archiv/1256to1260/t1258105.htm
' Code von Christian
Dim mstrOld As String
Dim RaBereich As Range
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strDatei As String, strText As String
Dim intFile As Integer, rng As Range
Const strDELIM As String = "|"
intFile = FreeFile
With ThisWorkbook
strDatei = .Path & "\SearchLog_" & Replace(.Name, ".xls", "") & ".txt"
End With
Open strDatei For Append As #intFile
If LOF(intFile) = 0 Then
strText = "Search Value|User Login|"
Print #intFile, strText
End If
If Range("G7")  mstrOld Then
strText = _
Range("G7") & strDELIM & _
Environ("username")
Print #intFile, strText
End If
Close #intFile
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set RaBereich = Intersect(Range("G7"), Range(Target.Address))
If Not RaBereich Is Nothing Then
mstrOld = Range("G7")
End If
End Sub
VG und nochmals danke, Tim
Anzeige
AW: Einfache Textdatei erstellen
09.04.2012 17:36:36
Hajo_Zi
ich überprüfe jetzt nicht was Du angepast hast, da ist mir meine Zeit zu Schade.
den Userer bekommst Du wie schioon geschrieben mit Environ("username") u7nd der Path wird hier
strDatei = .Path & "\LogBuch_" & Replace(.Name, ".xls", "") & ".txt"
festgelegt. Vielleicht
strDatei ="C:\" Environ("username") & "\Notebook\Desktop\My Documents\SearchLogsPath & "\LogBuch_" & Replace(.Name, ".xls", "") & ".txt"
Gruß Hajo
AW: Einfache Textdatei erstellen
09.04.2012 19:59:23
Tim
Hallo Hajo,
das habe ich probiert (s.u.) und dann springt beim Speichern der Debugger an, markierte Zeile ist:
Open strDatei For Append As #intFile
Kann mir vielleicht jemand anderes weiterhelfen ?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strDatei As String, strText As String
Dim intFile As Integer, rng As Range
Const strDELIM As String = "|"
intFile = FreeFile
With ThisWorkbook
strDatei = "C:\Notebook\Desktop\My Documents\SearchLogs" & Environ("username") & " _
_SearchLog" & Replace(.Name, ".xls", "") & ".xls"
End With
Open strDatei For Append As #intFile
If LOF(intFile) = 0 Then
strText = "Search Terms:"
Print #intFile, strText
End If
If Range("G7")  mstrOld Then
strText = _
Range("G7")
Print #intFile, strText
End If
Close #intFile
End Sub
VG, Tim
Anzeige
AW: Einfache Textdatei erstellen
09.04.2012 20:03:49
Hajo_Zi
das liegt wohl daran das es die Datei
"C:\Notebook\Desktop\My Documents\SearchLogsMaier_SearchLogDatei.xls" nicht gibt bisher wurde auch eine TXT Datei benutzt. Ich sehe nicht das Du den Code umgeschrieben hast. Der dürfte nicht laufen.
Gruß Hajo
AW: Einfache Textdatei erstellen
09.04.2012 20:10:55
Josef

Hallo Tim,
Option Explicit

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim strDatei As String, strText As String
  Dim intFile As Integer, rng As Range
  
  Const strDELIM As String = "|"
  
  intFile = FreeFile
  
  strDatei = Environ("USERPROFILE") & "\SearchLogs\SearchLog_" & Environ("USERNAME") & ".txt"
  
  If MakeSureDirectoryPathExists(strDatei) <> 0 Then
    Open strDatei For Append As #intFile
    If LOF(intFile) = 0 Then
      strText = "Search Terms:"
      Print #intFile, strText
    End If
    If Range("G7") <> mstrOld Then
      strText = _
        Range("G7")
      Print #intFile, strText
    End If
    Close #intFile
  Else
    MsgBox "Verzeichnis nicht gefunden!", vbExclamation, "Hinweis"
  End If
End Sub



« Gruß Sepp »

Anzeige
AW: Einfache Textdatei erstellen
09.04.2012 21:04:44
Tim
Hallo Sepp,
vielen Dank dafür !!
Nur zum Verständnis:
Kannst Du mir erklären, was "Userprofile" bewirkt und ob ich da irgendwo noch den Pfad angeben muss ?
VG, Tim
AW: Einfache Textdatei erstellen
09.04.2012 21:36:00
Josef

Hallo Tim,
Environ("USERPROFILE") gibt das Verzeichnis des angemeldeten Benutzers zurück.

« Gruß Sepp »

Anzeige
AW: Einfache Textdatei erstellen
09.04.2012 21:36:05
Josef

Hallo Tim,
Environ("USERPROFILE") gibt das Verzeichnis des angemeldeten Benutzers zurück.

« Gruß Sepp »

AW: Einfache Textdatei erstellen
09.04.2012 22:06:43
Tim
Hallo Sepp,
das funktioniert absolut super und auch Deine Erklärung hat mir echt geholfen - vielen Dank für Deine Hilfe !
VG und einen schönen Abend noch, Tim
Anzeige
AW: Einfache Textdatei erstellen
10.04.2012 07:47:18
Tim
Hallo Sepp,
ich habe mittlerweile fleissig getestet und bin dabei noch auf zwei kleine Fragen gestoßen - kannst Du mir damit vielleicht auch weiterhelfen ?
1) Kann man unterhalb der Überschrift im erzeugten Textfile eine Leerzeile oder Zeile mit Trennzeichen kreiren, die diese ein bisschen von der Liste darunter abhebt ?
2) Wenn man statt einem Textfile eine Excel-Datei erzeugen lässt, hat man dann die Möglichkeit, Formate zu definieren, z.B. dass die erste Spalte dort in fett erscheint ?
VG und nochmals danke, Tim
AW: Einfache Textdatei erstellen
10.04.2012 21:26:26
Josef

Hallo Tim,
eine Leerzeile fügst du mit & vbCrLf & vbCrLf & ein.
Du hast eine Lösung mit Textfile gewollt und einige haben relativ viel Zeit in dein Problem investiert, ein Logfile als XLS erzwingt eine komplett neue Lösung.

« Gruß Sepp »

Anzeige
AW: Einfache Textdatei erstellen
10.04.2012 22:54:05
Tim
Hallo Sepp,
vielen Dank !
Du hast Recht, was das xls-File betrifft, daran hatte ich im nachhinein auch gedacht.
Es klappt mittlerweile mit dem Textfile so gut, dass das auch völlig ausreicht.
VG und nochmals danke Dir, Tim

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige