Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
880to884
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
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
UF-Listbox Export in .txt aus 2 Listboxen?
22.06.2007 13:14:11
Till
Hallo zusammen,
ich hatte hier: (https://www.herber.de/forum/messages/879956.html) schon mal nachgefragt (wo mir Rudi den entscheidenden Input gegeben hatte) aber leider vorzeitigt meine Fragen geschlossen, bis mir einfiel, dass noch etwas fehlt.
Ich will also in einer U-Form-Listbox Daten per Makro als txt-Datei exportieren.
Nun hab ich 2 Listboxen auf der selben Userform.
Wie schafft man es nun, dass man die Daten der beiden Listboxen in EINE txt-Datei exportieren lässt und zwar so, dass die 1. Listbox (bei mir die linke) Daten in die txt-Datei linksbündig hineinschreibt und rechts daneben entsprechend der Zeilen aus der 1. Listbox die Daten aus der 2. Listbox schreibt.
Das Problem ist bei mir entstanden, da ich zuerst nur 8 Spalten in der Listbox hatte und diese auf 13 Spalten "aufbohren" wollte, wo ja Excel bekannter Weise auf 10 Spalten ungebundene Listbox begrenzt ist.
Eine gebundene Listbox kommt leider auch nicht in Frage, da ich die Listbox immer dynamisch mit unterschiedlichem Inhalt füllen lasse.
Weiß jemand Rat?
Rudi vielleicht?
Danke!
Gruß Till

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UF-Listbox Export in .txt aus 2 Listboxen?
23.06.2007 05:59:00
fcs
Hallo Till,
hier die angepasste Prozedur, so dass auch die Daten der 2. Listbox in die Textdatei geschrieben werden. Den Abschnitt zum schreiben der Spaltentitel hab ich etwas angepasst, so dass der Spaltentitel und Listboxeinträge sicher immer das gleiche Trennzeichen haben. Außerdem wird so das Problem umgangen, dass EXCEL97 nicht die Replace-Funktion unterstützt. Du has bisher übrigens nur 12 Spaltentitel festgelegt. Da du 13 Spalten in den beiden Listboxen hast muss du ggf. noch einen Spaltentitel ergänzen.
Gruß
Franz

Private Sub Image9_Click()
MsgBox "Einen Moment bitte," & vbLf & "die Daten werden geschrieben.", vbInformation, " "
Dim varHeader As Variant
Dim i As Long
Dim j As Long
Dim sFile$, stext$, sTime$, sSep$, ungueltig As Variant, sZusatz$, iFilenr
iFilenr = FreeFile
sSep = Chr(9)    'Chr(9) ohne "" falls TAB Separierung erwünscht! Sonst ";"
sTime = Format(Now, "YYYYMMDD_hhmmss")
'Arrayvariable mit den ungültigen/unschönen Zeichen in Dateinamen
ungueltig = Array("""", "/", "\", ":", "|", "'", ".")
With Verkehr.ListBox1
'Zusatz für Dateinamen aus Listbox 2. Spalte, 1.Zeile
If .ColumnCount >= 1 Then
sZusatz = .List(1, 2)
'Zusatz ggf. kürzen
If Len(sZusatz) > 50 Then sZusatz = Left(sZusatz, 50)
'Zusatz auf ungültige Zeichen prüfen und ggf. durch "_" ersetzen
For i = LBound(ungueltig) To UBound(ungueltig)
If InStr(1, sZusatz, ungueltig(i)) > 0 Then
sZusatz = Application.WorksheetFunction.Substitute(sZusatz, ungueltig(i), "_")
'sZusatz = Replace(sZusatz, ungueltig(i), "_") 'nur in neueren Excelversionen
End If
Next
End If
sFile = ThisWorkbook.Path & Application.PathSeparator _
& "Datenexport_" & sTime & IIf(.ColumnCount >= 1, "_" & sZusatz, "") & ".txt"
Open sFile For Output As iFilenr
' Einfügen von Spaltenheaderinfo in TXT-Datei
'Arrayvariable mit Spaltentiteln
varHeader = Array("Uhrzeit", "Spurart", "qKfz [1/h]", "qLkw [1/h]", _
"Vmittel [km/h]", "B [%]", "LOS [A-F]", "qA [1/min]", "qB [1/min]", _
"qC [1/min]", "qD [1/min]", "qE [1/min]")
stext = varHeader(LBound(varHeader))
For j = LBound(varHeader) + 1 To UBound(varHeader)
stext = stext & sSep & varHeader(j)
Next
Print #iFilenr, stext
' Ende Spaltenheader
For i = 0 To .ListCount - 1
stext = .List(i, 0)
For j = 1 To .ColumnCount - 1
stext = stext & sSep & .List(i, j)
Next
For j = 0 To Verkehr.ListBox2.ColumnCount - 1
stext = stext & sSep & Verkehr.ListBox2.List(i, j)
Next
Print #iFilenr, stext
Next
Close iFilenr
End With
MsgBox "Datei wurde angelegt:" & vbLf & sFile, vbInformation, " "
End Sub


Anzeige
AW: UF-Listbox Export in .txt aus 2 Listboxen?
24.06.2007 23:32:19
Till
Hallo Franz,
erst mal vielen Dank für Deine Mühe.
Ich hab Dein Makro noch mit einer Fehlerangabe erweitert, wenn noch nichts in die Listboxen eingelesen wurde:


Private Sub Image9_Click()
On Error GoTo Errorhandle
  MsgBox "Einen Moment bitte," & vbLf & "die Daten werden geschrieben.", vbInformation, " "
   Dim varHeader As Variant
   Dim i As Long
   Dim j As Long
   Dim sFile$, stext$, sTime$, sSep$, ungueltig As Variant, sZusatz$, iFilenr
   iFilenr = FreeFile
   sSep = ";"    'Chr(9) ohne "" falls TAB Separierung erwünscht! Sonst ";"
   sTime = Format(Now, "YYYYMMDD_hhmmss")
   'Arrayvariable mit den ungültigen/unschönen Zeichen in Dateinamen
   ungueltig = Array("""""/""\"":""|""'"".")
   With Verkehr.ListBox1
      'Zusatz für Dateinamen aus Listbox 2. Spalte, 1.Zeile
      If .ColumnCount >= 1 Then
         sZusatz = .List(1, 2)
         'Zusatz ggf. kürzen
         If Len(sZusatz) > 50 Then sZusatz = Left(sZusatz, 50)
         'Zusatz auf ungültige Zeichen prüfen und ggf. durch "_" ersetzen
         For i = LBound(ungueltig) To UBound(ungueltig)
            If InStr(1, sZusatz, ungueltig(i)) > 0 Then
               sZusatz = Application.WorksheetFunction.Substitute(sZusatz, ungueltig(i), "_")
               'sZusatz = Replace(sZusatz, ungueltig(i), "_") 'nur in neueren Excelversionen
            End If
         Next
      End If
      sFile = ThisWorkbook.Path & Application.PathSeparator _
         & "Datenexport_" & sTime & IIf(.ColumnCount >= 1, "_" & sZusatz, "") & ".csv"
      Open sFile For Output As iFilenr
      ' Einfügen von Spaltenheaderinfo in TXT-Datei
      'Arrayvariable mit Spaltentiteln
      varHeader = Array("Datum""Uhrzeit""Spurart""qKfz""qLkw", _
         "Vmittel""B""LOS""qA""qB", _
         "qC""qD""qE")
      stext = varHeader(LBound(varHeader))
      For j = LBound(varHeader) + 1 To UBound(varHeader)
        stext = stext & sSep & varHeader(j)
      Next
      Print #iFilenr, stext
      ' Ende Spaltenheader
      For i = 0 To .ListCount - 1
         stext = .List(i, 0)
         For j = 1 To .ColumnCount - 1
            stext = stext & sSep & .List(i, j)
         Next
         For j = 0 To Verkehr.ListBox2.ColumnCount - 1
            stext = stext & sSep & Verkehr.ListBox2.List(i, j)
         Next
         Print #iFilenr, stext
      Next
      Close iFilenr
   End With
   MsgBox "Datei wurde angelegt:" & vbLf & sFile, vbInformation, " "
Errorhandle:
    If Err.Number = 94 Then
        MsgBox "Es sind keine Daten " & vbCrLf & _
               "zum Export vorhanden!", vbInformation, " "
        Exit Sub
    Else
    End If
End Sub


Wie schaff ich es denn, dass die Überschriften genau über den Spalten landen (wahrscheinlich fehlen da irgendwo noch ein paar Tabs zwischen den einzelnen Überschriften?)?
So:
Userbild
sieht es ja noch nicht richtig aus.....
Danke schon mal!
Gruß Till

Anzeige
AW: UF-Listbox Export in .txt aus 2 Listboxen?
26.06.2007 07:32:34
fcs
Hallo Till,
die erzeugte Datei ist schon in Ordnung. Der Texteditor hat ein festes Tabulatorraster. Da deine Spaltentitel nicht die gleiche Zeichenzahl haben wie Datenspalten kommt es zur nicht so schönen Darstellung.
Die Frage ist dann, was willst du mit der txt-Datei sonst noch so machen willst.
Wenn du sie tatsächlich "nur" im Text-Editor anzeigen willst, dann könntest du die Spaltentitel mit zusätzlichen Leerzeichen verlängern, um die Optik zu verschönern. z.B. durch Anpassung folgender Zeile:

varHeader = Array("Datum     ", "Uhrzeit ", "Spurart", "qKfz", "qLkw", _
"Vmittel", "B", "LOS", "qA", "qB", _
"qC", "qD", "qE")


Gruß
Franz

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige