Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

UserForm Eingaben speichern | Herbers Excel-Forum


Betrifft: UserForm Eingaben speichern von: Dirk
Geschrieben am: 20.01.2012 17:18:16

Hallo zusammen,

Ich habe in Word ein Userfom mit einer Checkbox und 3 TextBoxen.

wenn ich die Userform an meinem Rechner aufrufe Daten eingebe und das nächste Dokument öffne (ohne word zu schließen) bleiben meine Eingaben erhalten.

Wenn ich das an dem PC von meiner Kollegin mache (Gleiches BS gleiches Office)
verschwinden die Eingaben nach jeder bestätigung (nur Hidden)

Wie kann das denn sein?

kann man eigendlich die Einträge exportieren und beim öffnen der UserForm erneut einlesen?
mit anderer Worten selbst wenn ich Word komplett schließe sollten die einträge wieder d sein wenn ich das Userform aufrufe.

irgendwie export in eine Textdatei oder so

wenn ja wie mach ich das?

Dank im Vorraus
Dirk

  

Betrifft: Es gibt zahlreiche WORD-Foren... von: NoNet
Geschrieben am: 20.01.2012 17:29:33

...weshalb stellst Du diese Frage dann in einem EXCEL-Forum, Dirk ?

Das was Du beschreibst ist eher ein Fall für eine Datenbank oder zumindest für eine (Excel-)Datenmaske.
Ich würde mich nicht darauf verlassen, dass WORD (oder ein anderes Programm) das gerade zufällig so handhabt, wie Du das möchtest.
In WORD kann man die Eingaben aus einem UserForm auch auslesen und z.B. in eine TXT-Datei (oder sogar XML-Datei) speichern und beim Öffnen der UserForm diese Daten wieder einlesen. WIE das funktioniert können Dir versierte WORD-Benutzer aber sicherlich besser beantworten. Ich zumindest arbeite zwar auch regelmässig mit WORD, aber nur sehr selten mit WORD VBA, daher steige ich hier aus.

Salut, NoNet


  

Betrifft: AW: Es gibt zahlreiche WORD-Foren... von: Dirk
Geschrieben am: 20.01.2012 17:44:02

Hallo NoNet

..weshalb stellst Du diese Frage dann in einem EXCEL-Forum, Dirk ?
Ich Denke bei UserForm und einer solchen allgemeinen Frage sollte das keinen unterschied machen ob ich das in Word oder Excel habe.

Das Tool was sich hinterher unter dem UserForm verbirgt ist natürlich auf word gemünzt
Das was Du beschreibst ist eher ein Fall für eine Datenbank oder zumindest für eine (Excel-)Datenmaske.

Nein.
In dem ersten Feld wir ein Dateiname eingetragen.
die beiden anderen Felder sind optionale Felder in denen Suchbegriffe eingetragen werden können.
eine Datenbank oder Datenmaske ist hier total übertrieben für, zumal die Datein auch eigendlich nicht mehr groß verarbeitet werden sondern lediglich aus "gedächnissstütze" im nachgang dienen sollen.
(fals man unterbrochen wurde wo war ich was hatte ich zuletzt gemacht)

Gruß
Dirk


  

Betrifft: AW: Es gibt zahlreiche WORD-Foren... von: Dirk
Geschrieben am: 20.01.2012 17:47:05

Export in eine txt Datei klingt gut
ich hab nur keine idee wie das gehen soll

Gruß
Dirk


  

Betrifft: Ich würde hier schauen... von: NoNet
Geschrieben am: 20.01.2012 17:59:40

Hallo Dirk,

wie gesagt : Von WORD VBA habe ICH nur wenig Ahnung - in Excle würde ich die Werte z.B. in ein Worksheet schreiben - was in WORD eben NICHT funktioniert, da es eben keine Tabellenkalkulation ist ;-)

Ich würde mich daher hier schlau machen :

https://www.google.de/#hl=de&q=Word+Export+Userform+Daten+in+TXT-Datei

Viel Erfolg und schönes WE, NoNet


  

Betrifft: AW: UserForm Eingaben speichern von: Dirk
Geschrieben am: 20.01.2012 19:25:46

Ok ich glaub ich hab eine Lösung die aber garantiert verbesserungswürdig ist

wenn einer also noch anregungen hat immer her damit :-D

Gruß
Dirk


Private Sub CommandButton1_Click()                  'Schreiben der .txt
inout = tb1.Value & ";" & tb2.Value & ";" & cb1.Value
F = FreeFile
  Open "c:\test.txt" For Output As #F
  Print #F, inout
  Close #F
'Shell "cmd Echo " & inout & " >c:test.txt", vbNormalFocus
'UF1.Hide
End Sub
Public Function txt_ReadLine(ByVal sFilename As String, _
  ByVal LineToRead As Long) As String
 
  Dim F As Integer
  Dim sLine As String
  Dim lRow As Long
 
  lRow = 0
  ' Existiert die Datei ?
  If Dir$(sFilename) <> "" Then
 
    ' Datei zum Lesen öffnen
    F = FreeFile
    Open sFilename For Input As #F
 
    ' Solange einlesen, bis entweder Dateiende
    ' oder gewünschte Zeilennummer erreicht
    While Not EOF(F) And lRow < LineToRead
      lRow = lRow + 1
      Line Input #F, sLine
    Wend
    Close #F
  End If
 
  ' Dateiende wurde frühzeitig erreicht,
  ' oder Datei war nicht vorhanden
  If lRow < LineToRead Then _
    sLine = ""
 
  txt_ReadLine = sLine
End Function

Private Sub UserForm_Initialize()           'einlesen der txt
On Error Resume Next
inout = txt_ReadLine("C:\test.txt", 1)
io = inout

i = InStrRev(inout, ";")                    'zerlegen in einzellne Variablen
s = i - 1
in1 = Right(inout, (Len(inout) - i))
inout = Left(inout, s)

i = InStrRev(inout, ";")
s = i - 1
in2 = Right(inout, (Len(inout) - i))
inout = Left(inout, s)

i = InStrRev(inout, ";")
s = i - 1
in3 = Right(inout, (Len(inout) - i))
inout = Left(inout, s)

If in1 = "Wahr" Then                        'ausfüllen der UserForm
cb1.Value = True
Else
cb1.Value = False
End If

tb2.Value = in2
tb1.Value = in3
End Sub



  

Betrifft: Lösungsmöglichkeit von: Dirk
Geschrieben am: 20.01.2012 19:48:37

Private Sub CommandButton1_Click()                  'Schreiben der .txt
inout = tb1.Value & ";" & tb2.Value & ";" & cb1.Value
F = FreeFile
  Open "c:\test.txt" For Output As #F
  Print #F, inout
  Close #F
UF1.Hide
MsgBox (tb1.Value & ";" & tb2.Value & ";" & cb1.Value)
End Sub

Public Function txt_ReadLine(ByVal sFilename As String, _
  ByVal LineToRead As Long) As String
 
  Dim F As Integer
  Dim sLine As String
  Dim lRow As Long
 
  lRow = 0
  ' Existiert die Datei ?
  If Dir$(sFilename) <> "" Then
 
    ' Datei zum Lesen öffnen
    F = FreeFile
    Open sFilename For Input As #F
 
    ' Solange einlesen, bis entweder Dateiende
    ' oder gewünschte Zeilennummer erreicht
    While Not EOF(F) And lRow < LineToRead
      lRow = lRow + 1
      Line Input #F, sLine
    Wend
    Close #F
  End If
 
  ' Dateiende wurde frühzeitig erreicht,
  ' oder Datei war nicht vorhanden
  If lRow < LineToRead Then _
    sLine = ""
 
  txt_ReadLine = sLine
End Function

Private Sub UserForm_Initialize()           'einlesen der txt
On Error Resume Next
inout = txt_ReadLine("C:\test.txt", 1)
io = inout

i = InStrRev(inout, ";")                    'zerlegen in einzellne Variablen
in1 = Right(inout, (Len(inout) - i))
inout = Left(inout, (i - 1))

i = InStrRev(inout, ";")
in2 = Right(inout, (Len(inout) - i))
inout = Left(inout, (i - 1))

i = InStrRev(inout, ";")
in3 = Right(inout, (Len(inout) - i))
inout = Left(inout, (i - 1))

If in1 = "Wahr" Then                        'ausfüllen der UserForm
cb1.Value = True
Else
cb1.Value = False
End If

tb2.Value = in2
tb1.Value = in3
End Sub

für Verbesserungsvorschläge bin ich offen

Gruß
Dirk


  

Betrifft: AW: Lösungsmöglichkeit von: JoWe
Geschrieben am: 20.01.2012 23:07:47

Hallo Dirk,
vllt. so:

Sub schreiben_in_textdatei()
    ' Die Textdatei muss schon existieren, vorhandener Text wird überschrieben
    ' Der Inhalt aller Textboxen (tb1 bis tbnn) wird zeilenweise in die txt-Datei geschrieben
    ' die geschriebenen Daten stehen in einer Zeile
    ' und sind durch Kommas getrennt.
    Dim c As MSForms.Control
    Open "c:\temp\wdText.txt" For Output As #1 'Dateiname und Pfad anpassen
    With UserForm1
        For Each c In UserForm1.Controls
            If TypeOf c Is MSForms.TextBox Then
                x = x + 1
                If c.Name = "TextBox" & x Then
                    Write #1, c
                    c = ""
                End If
            End If
        Next c
    End With
    Close #1
    MsgBox "Speicherung ist erfolgt!", vbOKOnly, "Hinweis"
End Sub

Sub lesen_aus_textdatei()
    Dim c As MSForms.Control
    Dim a(10) As Variant, i, x As Long, t As String
    Open "c:\temp\wdText.txt" For Input As #1 'Dateiname und Pfad anpassen
    i = 1
    Do While Not EOF(1) 
        Line Input #1, t
        a(i) = Replace(t, """", "")
        i = i + 1
    Loop
    Close #1
    For Each c In UserForm1.Controls
        If TypeOf c Is MSForms.TextBox Then
            x = x + 1
            If c.Name = "TextBox" & x Then
                c = a(x)
            End If
        End If
    Next c
End Sub

Achtung ich habe keine Fehlerroutinen eingebaut.
Die Makros gehen davon aus, das die Textboxen in linearer Reihenfolge aus der
Textdatei gefüllt werden.

Gruß
Jochen


  

Betrifft: AW: Lösungsmöglichkeit von: Dirk
Geschrieben am: 21.01.2012 16:25:56

Hallo JoWe,
Danke erstaml für deine Hilfe

Dein Makro sieht echt gut aus funktioniert aber leider nur bei den Textboxen.
die Checkbox übernimmer er leider nicht.

Du hast mich aber auf einen guten gedanken gebracht das ganze zu optimieren

ich werd das auch einfach in ne schleife setzten und zeilenweise schreiben und einlesen
das sollte dann auch Fehlerfreier sein

Gruß
Dirk


Beiträge aus den Excel-Beispielen zum Thema "UserForm Eingaben speichern"