WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 26.11.2003, 15:37   #1
row
Inventar
 
Registriert seit: 22.06.2001
Beiträge: 1.611


Standard txt-Export mit fester Spaltenbreite aus Excel - mit Macro?

Hi Leute,

ich weiss zwar nicht ob ich da wirklich ein Makro programmieren muss, aber sicherheitshalber post ich mal in der Rubrik "Programmierung".

Ich möchte aus einer Excel Tabelle Zeicheneinträge mehrerer Spalten als ein txt-File exportieren. Die Zeicheneinträge sind unterschiedlich lang (zwischen 3 und z.B. 15 Zeichen) - beim Export möchte ich dass bei kürzeren Einträgen einfach soviele Leerzeichen eingefügt werden, so viele wie das längste Wort hat (Tabulator geht leider nicht). Damit erhalte ich dann txt-Spalten die genau untereinander sind (feste Spaltenbreite).

Hat jemand eine Ahnung wie man das macht?

P.S: Er muss mir das längste Wort nicht suchen - dass kann ich ruhig manuel ermitteln!
row ist offline   Mit Zitat antworten
Alt 26.11.2003, 17:34   #2
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Hi!

Wenn du unbedingt mit Leerzeichen auffüllen mußt, wird es nicht ohne Makro gehen.
Dann kannst du den längsten Ausdruck auch automatisch suchen lassen.

mfg

WB
wbendl ist offline   Mit Zitat antworten
Alt 27.11.2003, 09:38   #3
row
Inventar
 
Registriert seit: 22.06.2001
Beiträge: 1.611


Standard

Kann sich wer mal das folgende Makro anschauen?
Es soll in Spalte 8 die jeweilige Zellenlänge (von oben nach unten) bestimmen, die Differenz zu 15 Zeichen ermitteln und dann (wenn <15) mit Leerzeichen auf 15 Zeichen auffüllen:

Code:
Sub Auffuellen()
Dim Leerz As String
Dim i As Long, laR As Long
Dim aZ As Byte
    Leerz = "               "   '15 Leerzeichen
    laR = Cells(Rows.Count, 8).End(xlUp).Row
    MsgBox laR
    For i = 1 To laR
      aZ = Len(Cells(i, 8).Text)
      
      If aZ < 15 Then Cells(i, 8).Value = _
        Cells(i, 8).Value & Left(Leerz, 15 - aZ)
    MsgBox Cells(i, 8).Value
    Next i

End Sub
row ist offline   Mit Zitat antworten
Alt 27.11.2003, 20:02   #4
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Hi!

Ich bin mit dem Objektmodell von Excel nicht so ganz vetraut. Aber ich gehe davon aus, daß dein Makro funktioniert.

Die If-Bedingung würde ich einfach weglassen. Falls der String schon vorher aus 15 Zeichen besteht, ändert sich ja nichts.

Eventuell müßte man prüfen, ob ein String mehr als 15 Zeichen hat.

mfg

WB
wbendl ist offline   Mit Zitat antworten
Alt 27.11.2003, 20:14   #5
pc.net
Aussteiger
 
Benutzerbild von pc.net
 
Registriert seit: 07.10.2001
Ort: Nettistan
Beiträge: 12.997

Mein Computer

Standard

warum einfach, wenns kompliziert auch geht

Datei | Speichern unter ... | Dateityp: Formatierter Text (Leerzeichen getrennt) (*.prn)

die spaltenbreite dient dann als referenz für die anzahl an zeichen auf die die einzelnen felder aufgefüllt werden ...

zumindest unter excel 2002 gehts so ...

____________________________________
Praktizierender Eristiker

No hace falta ser un genio para saber quién dijo eso.
Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein.
pc.net ist offline   Mit Zitat antworten
Alt 27.11.2003, 21:51   #6
row
Inventar
 
Registriert seit: 22.06.2001
Beiträge: 1.611


Standard

@pc.net
Aaaarrrg! Warum tu ich mir das an mit diesem Makro...
Na dann muss ich einfach nur die Spaltenbreite festlegen vor'm Speichern - danke!

@wbendl
Danke für die Rückmeldung!
row ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:38 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag