Textbox in TXT-Datei schreiben/auslesen; Leerzeilenproblem

Moderator: ModerationP

Textbox in TXT-Datei schreiben/auslesen; Leerzeilenproblem

Beitragvon MaHOneTwelve » 09. Jul 2021, 08:23

Guten Morgen zusammen,

ich habe mir folgedes Makro gebastelt, was mir auf Knopfdruck den Text einer Textbox in eine TXT-Datei schreibt und bei einem weiteren Knopfdruck den Inhalt der TXT auch wieder in die Textbox importiert.
Leider scheint beim Schreiben in die TXT Datei immer eine zusätzliche Leerzeile am Ende erzeugt zu werden, die dann auch beim Einlesen in die Textbox mit übernommen wird.
Die gleiche Prozedur nutze ich anderer Stelle auch, allerdings mit mehreren Textboxen/TXT-Dateien. Da tritt diese Leerzeile dann nicht auf, wenn ich das richtig sehe.

Hat jemand eine Idee, woran das liegen kann?

Hier der Code zum Speichern in die TXT, Leerzeile wird erzeugt:
Code: Alles auswählen
Private Sub CommandButton1_Click()
Dim vPfad As Variant, strText As String
Dim FF As Integer

'Pfad
    vPfad = "U:\Vfg\TempVfg.txt"

'Text in Variable
    strText = TextBox1.Text
   
'Textdatei
    FF = FreeFile()
    Open vPfad For Output As #FF
     Print #FF, strText
    Close #FF
UserForm3.Hide

End Sub


Hier der Code zum Auslesen aus der TXT, Leerzeile wird eingelesen:
Code: Alles auswählen
Private Sub CommandButton11_Click()
Dim vPfad As Variant, strText As String
Dim FF As Integer
     vPfad = "U:\Vfg\TempVfg.txt"
   
    FF = FreeFile()
    Open vPfad For Binary As #FF
   
    strText = Space$(LOF(FF))
    Get #FF, , strText
    Close #FF

UserForm3.TextBox1.Text = strText
UserForm3.Show
End Sub


Hier der Code, bei dem die Leerzeile mMn NICHT erzeugt wird:
Code: Alles auswählen
Private Sub CommandButton1_Click()
Dim vPfad As Variant, strText As String
Dim FF As Integer

'Pfad definieren
    vPfadQL1 = "U:\Quickies\QL1.txt"
    vPfadQT1 = "U:\Quickies\QT1.txt"
    vPfadQL2 = "U:\Quickies\QL2.txt"
    vPfadQT2 = "U:\Quickies\QT2.txt"
    vPfadQL3 = "U:\Quickies\QL3.txt"
    vPfadQT3 = "U:\Quickies\QT3.txt"
    vPfadQL4 = "U:\Quickies\QL4.txt"
    vPfadQT4 = "U:\Quickies\QT4.txt"
    vPfadQL5 = "U:\Quickies\QL5.txt"
    vPfadQT5 = "U:\Quickies\QT5.txt"
    vPfadQL6 = "U:\Quickies\QL6.txt"
    vPfadQT6 = "U:\Quickies\QT6.txt"


'Text in Variable
    strTextQL1 = TextBox2.Text
    strTextQT1 = TextBox1.Text
    strTextQL2 = TextBox4.Text
    strTextQT2 = TextBox3.Text
    strTextQL3 = TextBox6.Text
    strTextQT3 = TextBox5.Text
    strTextQL4 = TextBox8.Text
    strTextQT4 = TextBox7.Text
    strTextQL5 = TextBox10.Text
    strTextQT5 = TextBox9.Text
    strTextQL6 = TextBox12.Text
    strTextQT6 = TextBox11.Text
   
'Textdatei
    'Label in Dateien
    FF = FreeFile()
    Open vPfadQL1 For Output As #FF
     Print #FF, strTextQL1
      Close #FF
     
    Open vPfadQL2 For Output As #FF
     Print #FF, strTextQL2
      Close #FF
     
    Open vPfadQL3 For Output As #FF
     Print #FF, strTextQL3
      Close #FF
     
    Open vPfadQL4 For Output As #FF
     Print #FF, strTextQL4
      Close #FF
   
    Open vPfadQL5 For Output As #FF
     Print #FF, strTextQL5
      Close #FF

    Open vPfadQL6 For Output As #FF
     Print #FF, strTextQL6
      Close #FF
   
    'Text in Dateien
    FF = FreeFile()
    Open vPfadQT1 For Output As #FF
     Print #FF, strTextQT1
      Close #FF
     
    Open vPfadQT2 For Output As #FF
     Print #FF, strTextQT2
      Close #FF

    Open vPfadQT3 For Output As #FF
     Print #FF, strTextQT3
      Close #FF
     
    Open vPfadQT4 For Output As #FF
     Print #FF, strTextQT4
      Close #FF
     
    Open vPfadQT5 For Output As #FF
     Print #FF, strTextQT5
      Close #FF
     
    Open vPfadQT6 For Output As #FF
     Print #FF, strTextQT6
      Close #FF
   
'Quicky Buttons labeln
UserForm1.CommandButton13.Caption = UserForm4.TextBox2.Text
UserForm1.CommandButton14.Caption = UserForm4.TextBox4.Text
UserForm1.CommandButton15.Caption = UserForm4.TextBox6.Text
UserForm1.CommandButton16.Caption = UserForm4.TextBox8.Text
UserForm1.CommandButton17.Caption = UserForm4.TextBox10.Text
UserForm1.CommandButton18.Caption = UserForm4.TextBox12.Text

End Sub


Vielen Dank im Voraus!
Marius
MaHOneTwelve
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 12. Mai 2020, 14:43

Re: Textbox in TXT-Datei schreiben/auslesen; Leerzeilenprobl

Beitragvon DerHoepp » 09. Jul 2021, 08:42

Moin Marius,

hast du dir mal die Doku angeschaut: https://docs.microsoft.com/en-us/office ... tstatement
Daten, die du mit Print in eine Datei schreibst, werden für gewöhnlich mit Input wieder ausgelesen. Es ist etwas ungewöhnlich, dass du die Datei Binär öffnest und den gesamten Inhalt einliest.
Im übrigen bin ich aus deinem Zweiten Codeversuch noch nicht so ganz schlau geworden. Warum möchtest du den Inhalt mehrerer Variablen in unterschiedliche Dateien schreiben, statt als strukturierte Daten in eine einzige Datei, die du später einfach ebenso strukturiert wieder ausliest?

Kannst du ein bisschen Butter bei die Fische tun und sagen, was du eigentlich vorhast?

Viele Grüße
derHöpp

[Nachtrag: Es spricht natürlich nix dagegen, dass du die Standard IO-Statements weiternutzt, ich persönlich halte allerdings mittlerweile den objektorientierten Weg über Textstreams (zum Beispiel mit Hilfe des FileSystemObjects) für wesentlich einfacher nachvollziehbar:
https://docs.microsoft.com/en-us/office ... ile-method ]
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9849
Registriert: 14. Mai 2013, 11:08

Re: Textbox in TXT-Datei schreiben/auslesen; Leerzeilenprobl

Beitragvon MaHOneTwelve » 09. Jul 2021, 09:53

Hallo derHöpp,

die meisten Deiner Fragen muss ich leider mit "weil ich es nicht besser kann" beantworten. ;)
Ich habe mir diese Code-Schnipsel mühsam zusammengebaut und war froh, dass augenscheinlich das bei raus kam, was ich haben wollte.

Ich nutze die erste Version um immer wiederkehrende, aber möglicherweise täglich oder halbtäglich sich ändernde, Texte in erhaltene E-Mails einzufügen. Folglich gib es einen weiteren ComandButton, der dann den Inhalt aus den Textboxen in eine E-Mail einfügt.

Die zweite Version ist quasi die Fortführung der ersten: ich konfiguriere mir in einer zusätzlichen UserForm immer zwei Textfelder. Eins davon ("QT") enthält den einzufügenden Text und das zweite ("QL") dient nur zur Beschriftung eines CommandButtons.
Beim Klick auf Speichern wird der Text aus Textbox QT 1bis QT6 in die Datei QT1 bis Qt6 und die Beschriftung für die CommandButtons aus Textbox QL1 bis QL6 in die Datei QL1 bis QL6 geschrieben.
Gleichzeitig wird in einer weiteren UserForm bei insgesamt 6 CommandButtons die Caption aus den QL1 bis QL6 Textfeldern auf die Buttons gelegt.
Klicke ich nun einen dieser 6 Quicky Buttons, wird die markierte E-Mail geöffnet, der Text aus dem entsprechenden Textboxen QT1 bis QT6 eingefügt und die Mail wieder geschlossen. Das ganze nennt sich dann Quicky 1 bis Quicky 6 und soll editierbare Texte mit einem Knopfdruck in E-Mails einfügen.

Mag sein, dass das alles galanter geht...aber ich komme mit meinen Fähigkeiten nur so dahin.
MaHOneTwelve
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 12. Mai 2020, 14:43

Re: Textbox in TXT-Datei schreiben/auslesen; Leerzeilenprobl

Beitragvon MaHOneTwelve » 09. Jul 2021, 13:01

An anderer Stelle wurde ich drauf hingewiesen, dass der folgende Code (Auszug) die Leerzeile verhindert, wichtig hier das Semikolon am Ende:
Code: Alles auswählen
Print #FF, strTextQL1;


Somit ist mein intiales Anliegen erledigt.
Bin aber für HInweise/Tipps zur Verschlankung des Codes offen...;)

VG
Marius
MaHOneTwelve
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8
Registriert: 12. Mai 2020, 14:43


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast