Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1684to1688
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
Textfile aus Userform Textboxen erzeugen
16.04.2019 08:51:07
Pascal
Guten Morgen miteinander
Dank der grossartigen Hilfe vergangene Woche – hier im Forum – konnte ich zwischenzeitlich eine neue
Beispielsdatei zusammenbauen. (siehe ZIP im Anhang).
https://www.herber.de/bbs/user/129174.zip
Durch Klick auf die Schaltfläche Öffnen wähle ich die Textdatei aus, welche dann in die einzelnen Textfelder eingelesen wird.
Dies funktioniert soweit perfekt.
Im Code (welchen ich von einem sehr netten, hilfsbereiten Forumanen hier erhalten habe) steht eine STOP – Zeile. Um den Code
Schritt-für-Schritt laufen zu lassen.
Nun möchte ich natürlich das Schrittweise "Blättern" in den Datensätzen mittels dem auf der UserForm angeordneten Scrollbar bewältigen.
Daher meine erste Frage:
Muss ich den Code direkt hinter diesen Scrollbar setzen oder kann ich diesem einen Code unter Scrollbar_Change definieren, welcher dann
das schrittweise vor-/zurückblättern durch die Datensätze im Textfile ermöglicht?
Weiter erlaub ich mir zu fragen, wie ich denn Daten in ein neues, anzulegendes Textfile schreiben kann.
Ich meine… durch die Schaltfläche "Speichern" möchte ich die Werte welche ich aktuell in den Textfiles stehen habe, in eine Textdatei (gleicher Aufbau wie im Beispiel) schreiben und speichern.
Herzlichen Dank für Eure Unterstützung und Hilfe
Grüsst Euch: Pascal

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfile aus Userform Textboxen erzeugen
16.04.2019 09:00:38
Pascal
… das Textfile kann ich schon mal so erzeugen:
Private Sub CommandButton3_Click()
Dim strTextNew As String
Open "c:\Temp\DATEI1.txt" For Output As #1
strTextNew = TextBox1.Text & ";" & TextBox2.Text
Print #1, strTextNew
Close #1
End Sub
… da ich aber total 23 TextBoxen auslesen und ins Textfile schreiben muss … ginge das evt. auch anders ?
AW: Textfile aus Userform Textboxen erzeugen
16.04.2019 12:11:55
Nepumuk
Hallo Pascal,
teste mal:
Private Sub CommandButton3_Click()
    Dim strTextNew As String
    Dim lngIndex As Long
    For lngIndex = 1 To 23
        strTextNew = Controls("TextBox" & CStr(lngIndex)).Text & ";"
    Next
    strTextNew = Left$(strTextNew, Len(strTextNew) - 1)
    Open "c:\Temp\DATEI1.txt" For Output As #1
    Print #1, strTextNew
    Close #1
End Sub

Gruß
Nepumuk
Anzeige
strTextNew - ist nachher leer-oder? Gruß
16.04.2019 12:41:54
robert
AW: strTextNew - ist nachher leer-oder? Gruß
16.04.2019 12:58:39
Nepumuk
Hallo robert,
danke für den Hinweis.
@Pascal
so natürlich:
Private Sub CommandButton3_Click()
    Dim strTextNew As String
    Dim lngIndex As Long
    For lngIndex = 1 To 23
        strTextNew = strTextNew & Controls("TextBox" & CStr(lngIndex)).Text & ";"
    Next
    strTextNew = Left$(strTextNew, Len(strTextNew) - 1)
    Open "H:\Temp\DATEI1.txt" For Output As #1
    Print #1, strTextNew
    Close #1
End Sub

Gruß
Nepumuk
Anzeige
AW: strTextNew - ist nachher leer-oder? Gruß
16.04.2019 13:36:38
Pascal
genau ! funktioniert bestens
vielen herzlichen dank!
… jetzt such ich nur noch eine Funktion um durch die einzelnen Datensätze im Textfile blättern zu können mittels Scrollbar auf der UserForm
vorwärts - rückwärts …
AW: strTextNew - ist nachher leer-oder? Gruß
16.04.2019 13:45:35
Nepumuk
Hallo Pascal,
mit einer TextBox oder wie? Bitte etwas präziser!
Gruß
Nepumuk
AW: strTextNew - ist nachher leer-oder? Gruß
16.04.2019 14:14:29
Pascal
Hallo Nepumuk
siehe in meiner Beispiels-Datei. Dort gibt's ja auf der UserForm bereits eine Scrollbar.
mittels dieser Scrollbar möchte ich durch das Textfile welches ich vorher geöffnet habe blättern können.
(zeile vorwärt, zeile rückwärts)
… in den Textfeldern auf der UserForm sollen dabei die Textfelder immer die Datensätze - bezogen auf die aktuelle Zeile im Textfile anzeigen.
… hoffe, man versteht wie ich meine ?
Anzeige
AW: strTextNew - ist nachher leer-oder? Gruß
16.04.2019 15:03:52
Nepumuk
Hallo Pascal,
teste mal:
Option Explicit

Private mstrArray() As String

Private Sub CommandButton4_Click()
    Hide
End Sub

Private Sub CommandButton5_Click()
    Dim intDatei As Integer
    Dim sFile As String
    Dim strText As String
    Dim inputArray
    Dim lRecCnt As Long
    Dim lXArray As Long
    sFile = Application.GetOpenFilename("Text Dateien (*.txt), *.txt")
    If sFile = "Falsch" Then Exit Sub
    intDatei = FreeFile()
    Open sFile For Input As #intDatei
    Do Until EOF(intDatei)
        Line Input #intDatei, strText
        Redim Preserve mstrArray(lRecCnt)
        mstrArray(lRecCnt) = strText
        lRecCnt = lRecCnt + 1
        inputArray = Split(Replace(strText, Chr$(34), vbNullString), ";")
        For lXArray = 0 To UBound(inputArray) - 1
            If lRecCnt = 1 Then
                Controls("Label" & CStr(lXArray + 1)) = inputArray(lXArray)
            Else
                Controls("TextBox" & CStr(lXArray + 1)) = inputArray(lXArray)
            End If
        Next lXArray
    Loop
    Close #intDatei
    With ScrollBar1
        .Min = 1
        .Max = lRecCnt - 1
    End With
End Sub

Private Sub ScrollBar1_Change()
    Dim ialngIndex As Long
    Dim avntTemp As Variant
    avntTemp = Split(Replace(mstrArray(ScrollBar1.Value), Chr$(34), vbNullString), ";")
    For ialngIndex = LBound(avntTemp) To UBound(avntTemp)
        Controls("TextBox" & CStr(ialngIndex + 1)) = avntTemp(ialngIndex)
    Next
End Sub

Private Sub UserForm_Initialize()
    Caption = "ABW Textfile Creator"
    Frame1.Caption = "Beispiels-File"
    CommandButton1.Caption = "Neu"
    CommandButton2.Caption = "Löschen"
    CommandButton3.Caption = "Speichern"
    CommandButton4.Caption = "Schliessen"
    CommandButton5.Caption = "Öffnen"
End Sub

Gruß
Nepumuk
Anzeige
AW: strTextNew - ist nachher leer-oder? Gruß
16.04.2019 15:31:06
Pascal
Hallo Nepumuk
das ist ja irre komplex und interessant :-)
Leider aber scheint irgendwo noch ein Fehler drin zu sein...
Das Ding bleibt mit Fehlermeldung stehen: >
und bleibt auf der Zeile ReDim Preserve mstrArray(lRecCnt) stehen. (in Private Sub CommandButton5_Click()
… oder hab ich was falsch gemacht oder übersehen?
AW: strTextNew - ist nachher leer-oder? Gruß
16.04.2019 15:50:25
Nepumuk
Hallo Pascal,
hast du auch ganz oben unter "Option Explicit" (Das sollte immer die erste Zeile in einem Modul sein) auch diese Zeile eingefügt:
Private mstrArray() As String
Gruß
Nepumuk
AW: strTextNew - ist nachher leer-oder? Gruß
16.04.2019 15:53:57
Pascal
:-)
da war tatsächlich der Fehler
vielen, vielen, herzlichen Dank für Deine grossartige Hilfe!
jetzt heissts erstmals … testen, lernen, testen, lernen....
Anzeige
AW: strTextNew - ist nachher leer-oder? Gruß
17.04.2019 12:56:06
Pascal
Hallo Nepumuk
zwischenzeitlich hab ich Deinen tollen Code in meine Datei implementiert und ausgiebig getestet.
funktioniert perfekt !
jetzt fehlt mir noch ne Funktion (Button) mittels dem ich die aktuell angezeigte Datenzeile (aus dem Textfile) löschen kann.
d.h.
ich wähle ja über den Scrollbar aus, welche Dateizeile ich in den TextBoxen auf der Userform angezeigt haben möchte.
jetzt such ich nach einer Möglichkeit, wie ich (durch Klick auf einen zusätzlichen Button) genau eben diesen einen Datensatz aus dem Textfile rauslöschen kann.
(ich hoffe, man versteht was ich meine?)
geht das?
Anzeige
AW: strTextNew - ist nachher leer-oder? Gruß
17.04.2019 16:20:26
Nepumuk
Hallo Pascal,
teste mal:
Option Explicit

Private mastrArray() As String
Private mvntFile As Variant

Private Sub CommandButton2_Click()
    Dim lngCount As Long, ialngIndex As Long
    Dim intFileNumber As Integer
    Dim strText As String, astrArray() As String
    If Not IsEmpty(mvntFile) Then
        intFileNumber = FreeFile
        Open mvntFile For Input As #intFileNumber
        Do Until EOF(intFileNumber)
            Line Input #intFileNumber, strText
            If lngCount <> ScrollBar1.Value Then
                Redim Preserve astrArray(ialngIndex)
                astrArray(ialngIndex) = strText
                ialngIndex = ialngIndex + 1
            End If
            lngCount = lngCount + 1
        Loop
        Close #intFileNumber
        Open mvntFile For Output As #intFileNumber
        Print #intFileNumber, Join(astrArray, vbCr)
        Close #intFileNumber
        Call ReadFile
    Else
        Call MsgBox("Keine Datei ausgewählt.", vbExclamation, "Hinweis")
    End If
End Sub

Private Sub CommandButton4_Click()
    Hide
End Sub

Private Sub CommandButton5_Click()
    mvntFile = Application.GetOpenFilename("Text Dateien (*.txt), *.txt")
    If mvntFile <> False Then Call ReadFile
End Sub

Private Sub ScrollBar1_Change()
    Dim ialngIndex As Long
    Dim avntTemp As Variant
    avntTemp = Split(Replace(mastrArray(ScrollBar1.Value), Chr$(34), vbNullString), ";")
    For ialngIndex = LBound(avntTemp) To UBound(avntTemp)
        Controls("TextBox" & CStr(ialngIndex + 1)) = avntTemp(ialngIndex)
    Next
End Sub

Private Sub UserForm_Initialize()
    Caption = "ABW Textfile Creator"
    Frame1.Caption = "Beispiels-File"
    CommandButton1.Caption = "Neu"
    CommandButton2.Caption = "Löschen"
    CommandButton3.Caption = "Speichern"
    CommandButton4.Caption = "Schliessen"
    CommandButton5.Caption = "Öffnen"
End Sub

Private Sub ReadFile()
    Dim intFileNumber As Integer
    Dim strText As String
    Dim vntArray As Variant
    Dim lngCounter As Long
    Dim lngIndex As Long
    intFileNumber = FreeFile
    Open mvntFile For Input As #intFileNumber
    Do Until EOF(intFileNumber)
        Line Input #intFileNumber, strText
        Redim Preserve mastrArray(lngCounter)
        mastrArray(lngCounter) = strText
        lngCounter = lngCounter + 1
        vntArray = Split(Replace(strText, Chr$(34), vbNullString), ";")
        For lngIndex = 0 To UBound(vntArray) - 1
            If lngCounter = 1 Then
                Controls("Label" & CStr(lngIndex + 1)) = vntArray(lngIndex)
            Else
                Controls("TextBox" & CStr(lngIndex + 1)) = vntArray(lngIndex)
            End If
        Next
    Loop
    Close #intFileNumber
    With ScrollBar1
        .Min = 1
        .Max = lngCounter - 1
        .Value = 1
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: strTextNew - ist nachher leer-oder? Gruß
18.04.2019 06:40:58
Pascal
Guten Morgen
ich sage schon mal vorab TAUSEND DANK für Deinen Beispiels-Code.
Diesen werde ich jetzt dann gleich mal in mein File einbauen, testen und anschauen.
Hab einen schönen Tag und nochmals tausend Dank
Pascal
AW: Textfile aus Userform Textboxen erzeugen
16.04.2019 13:34:51
Pascal
Hallo Nepumuk
geil! funktioniert perfekt! vielen Dank !

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige