Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

EXCEL Mehrzeiler aus Textdatei als Mehrzeiler in eine einzlene Zeile importieren

Frage Microsoft Microsoft Office

Mitglied: romberto

romberto (Level 1) - Jetzt verbinden

17.08.2012, aktualisiert 29.01.2013, 6083 Aufrufe, 12 Kommentare

Hallo Gemeinde,

Kann sein, dass ich mal wieder komplett um 5 Ecken denke. Ich erläuter am besten mal mein Problem:

Ich habe eine Textdatei welche wievolgt aufgebaut ist:

Dateiname [Tapstop] Datum [Tapstop] Mehrzeilige Erläuterung

Beispiel:

01.
testdatei.zip      2012-08-17      Diese Datei enthält 
02.
                                   diverse Projekte: 
03.
                                   BLABLALBA..... 
04.
nächstedatei.zip   Datum           Blablabla 
05.
                                   blablabla
Wenn ich das nun in Excel importiere werden die Spalten zwar richtig angelegt, wie bekomme ich es aber hin, dass die Mehrzeilige Erläuterung mit Zeilenumbruch in einer einzelnen Zeile steht, dass ich so zusagen in Zeile 2 auch schon die nächste Datei habe?

Ich hoffe ihr könnt einem Excel Neuling etwas unter die Arme greifen...

Viele Grüße

Robert
Mitglied: 76109
17.08.2012, aktualisiert um 11:32 Uhr
Hallo Robert!

Dazu müsstest Du den Text zuvor entsprechend konvertieren.

Ein normaler Zeilenumbruch besteht aus zwei Zeichen CR + LF und wenn Du Mehrzeiler in einer Zelle haben willst, dann müssen die betreffenden CR's entfernt werden. D.h. das an den bereffenden Stellen nur ein LF steht und das wiederum entspricht einem 'Alt+Return' innerhalb einer Zelle.

Gruß Dieter
Bitte warten ..
Mitglied: bastla
17.08.2012 um 12:04 Uhr
Hallo romberto!

Wenn am Beginn der Zeilen 2, 3 und 5 jeweils 2 TAB stehen und es genügt, die Zeilenschaltungen durch Leerzeichen zu ersetzen, sollte das folgende VBScript eine für den Import passende Datei erstellen:
01.
Ein = "D:\MitUmbruch.txt" 
02.
Aus = "D:\OhneUmbruch.txt" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
Set rE = New RegExp 
06.
rE.Global = True 
07.
rE.Pattern = "\r\n\t\t" 
08.
 
09.
fso.CreateTextFile(Aus).Write rE.Replace(fso.OpenTextFile(Ein).ReadAll, " ")
Wenn Du die Zeile 5 durch
Set rE = CreateObject("VBScript.RegExp")
ersetzt, kannst Du das auch als Makro in einer Excel-Datei verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
18.08.2012, aktualisiert um 14:44 Uhr
Hallo bastla!

Habe festgestellt, dass der Textimport die LF's als normalen Zeilenumbruch interpretiert, also indem Fall leider doch nicht funktioniert

Für Dein Skript hätte ich folgenden Verbesserungsvorschlag:
01.
rE.Pattern = "\r\n\s{1,}"
wobei alle Tabs/Leerzeichen nach einem Zeilenumbruch ersetzt werden.

Gruß Dieter
Bitte warten ..
Mitglied: bastla
18.08.2012 um 15:23 Uhr
@Dieter
Habe festgestellt, dass der Textimport die LF's als normalen Zeilenumbruch interpretiert
... weswegen ich auch in meinem Vorschlag Leerzeichen anstelle des LF angeboten habe ...

Dein Verbesserungsvorschlag ist sinnvoll und lässt sich noch etwas eleganter formulieren:
rE.Pattern = "\r\n\s+"
Grüße
bastla
Bitte warten ..
Mitglied: 76109
18.08.2012, aktualisiert um 18:30 Uhr
[OT]
@bastla
... und lässt sich noch etwas eleganter formulieren:
rE.Pattern = "\r\n\s+"
Stimmt, hatte allerdings mit einem
rE.Pattern = "\r\s{2,}"
gerechnet

Gruß Dieter
[/OT]
Bitte warten ..
Mitglied: bastla
18.08.2012 um 16:50 Uhr
Hallo Dieter!

Das würde zwar meinem obigen Ansatz genauer entsprechen, aber es fehlt ja ohnehin noch ein Feedback, ob die Annahme, dass die Folgezeilen mit jeweils 2 TAB beginnen würden, überhaupt stimmt - um dem geposteten Beispiel zu entsprechen, passt es aber mit nur einem Whitespace am Zeilenanfang ...

Grüße
bastla
Bitte warten ..
Mitglied: 76109
18.08.2012, aktualisiert um 18:31 Uhr
[OT]
Hallo bastla!

Ob der Zeilenanfang jetzt mit 1, 2, 3... Tabs oder Leerzeichen beginnen ist ja ohne Bedeutung. Von dem abgesehen würden 2 Tab's eh nicht ausreichen, um die unteren Texte in die Beispiel-Position zu bringen. Daher war/ist mein Ansatz eigentlich, nach dem '\r' mindestens 2 Zeichen aus (\n, \t, " ", ...) und x-beliebig nachfolgende (/t oder " "), was ja auch mit "\r\n\s+" gegeben ist. Insofern war mein letzter Ansatz eigentlich als nicht ernstzunehmender Scherz gedacht und hoffe Du vergibst mir

Gruß Dieter
[/OT]
Bitte warten ..
Mitglied: bastla
18.08.2012 um 18:32 Uhr
Hallo Dieter!
Von dem abgesehen würden 2 Tab's eh nicht ausreichen, um die unteren Texte in die Beispiel-Position zu bringen.
Hatte ich auch überlegt;
Wenn ich das nun in Excel importiere werden die Spalten zwar richtig angelegt
würde aber wieder darauf hinweisen, dass es doch genau die 2 TAB sind ...
Insofern war mein letzter Ansatz eigentlich als nicht ernstzunehmender Scherz gedacht und hoffe Du vergibst mir
Aber nur ausnahmsweise

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
18.08.2012, aktualisiert um 18:46 Uhr
Hallo Zusammen!

Um tatsächlich die Zeilenumbrüche in Spalte 3 so zu setzen, wie sie in der Textdatei auftreten, könnte man eure Ansätze gleich in ein Excel Makro packen.
Etwa so:
01.
Sub import() 
02.
    Dim sFName, iFNum As Integer, sText As String, i As Long, aLines, _ 
03.
        oWb As Excel.Workbook, oWs As Excel.Worksheet 
04.
    sFName = Application.GetOpenFilename( _ 
05.
        Title:="Wähle eine Datei zum Importieren aus ...", _ 
06.
        FileFilter:="Text Dateien *.txt (*.txt),", _ 
07.
        MultiSelect:=False) 
08.
    If sFName = False Then Exit Sub 
09.
    iFNum = FreeFile() 
10.
    Open sFName For Input As iFNum 
11.
    sText = Input(LOF(iFNum), iFNum) 
12.
    Close iFNum 
13.
    Set oWb = Application.Workbooks.Add(xlWBATWorksheet) 
14.
    Set oWs = oWb.Worksheets(1) 
15.
    oWs.Name = _ 
16.
        CreateObject("Scripting.FileSystemObject").GetFileName(sFName) 
17.
    With CreateObject("VBScript.RegExp") 
18.
        .Global = True 
19.
        .Pattern = "\r\n\s+" 
20.
        sText = .Replace(sText, vbLf) 
21.
    End With 
22.
    aLines = Split(sText, vbCrLf) 
23.
    For i = 0 To UBound(aLines) 
24.
        oWs.Range(Cells(i + 1, 1), Cells(i + 1, 3)) = Split(aLines(i), vbTab) 
25.
    Next 
26.
End Sub
Grüße
rubberman
Bitte warten ..
Mitglied: 76109
18.08.2012 um 23:44 Uhr
Hallo rubberman!

Nach dem Motto, Nägel mit Köpfen machen dann der Vollständigkeit halber noch die Vorlage-Variante (.*xlt) mit Leerzeichen. Gefällt mir im Tabellenblatt optisch besser und per AutoFit kann die optimale Spaltenbreite angepasst werden, was beim Mehrzeiler leider nicht funktioniert.
01.
Option Explicit 
02.
 
03.
Private Const DlgT = "Wähle eine Datei zum Importieren aus ..." 
04.
Private Const DlgF = "Text Dateien (*.txt), *.txt" 
05.
 
06.
Sub TextImport() 
07.
    Dim sFileName As Variant, Text As Variant, i As Long 
08.
 
09.
    sFileName = Application.GetOpenFilename(Title:=DlgT, FileFilter:=DlgF, MultiSelect:=False) 
10.
     
11.
    If sFileName = False Then Exit Sub 
12.
     
13.
    Text = CreateObject("Scripting.FileSystemObject").OpenTextFile(sFileName).ReadAll 
14.
     
15.
    With CreateObject("VBScript.RegExp") 
16.
        .Global = True 
17.
        .Pattern = "\r\n\s+" 
18.
         Text = Split(.Replace(Text, " "), vbCrLf) 
19.
    End With 
20.
     
21.
    With Sheets(1) 
22.
       .Cells.ClearContents 
23.
        For i = 0 To UBound(Text) 
24.
            If Text(i) <> "" Then 
25.
                Cells(i + 1, "A").Resize(1, 3) = Split(Text(i), vbTab) 
26.
            End If 
27.
        Next 
28.
       .Columns("A:C").AutoFit 
29.
    End With 
30.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: rubberman
19.08.2012 um 14:09 Uhr
Hallo Dieter!

Zitat von 76109:
... per AutoFit kann die optimale Spaltenbreite angepasst werden, was beim Mehrzeiler leider nicht funktioniert.

Jein. Wenn die Breite dabei kleiner wird, funktioniert es. Muss sie größer werden, dann nicht. (Warum das so ist, wird mir wohl ewig ein Rätsel bleiben.)
Workaround könnte so aussehen:
~~~ snip ~~~
01.
    With oWs.UsedRange 
02.
        .Cells.VerticalAlignment = xlTop 
03.
        .ColumnWidth = 200 
04.
        .RowHeight = 300 
05.
        .Columns.AutoFit 
06.
        .Rows.AutoFit 
07.
    End With
~~~ snip ~~~

Grüße
rubberman
Bitte warten ..
Mitglied: 76109
19.08.2012, aktualisiert um 14:21 Uhr
Hallo rubberman!

Funktioniert Danke für den Tip!

Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Textdateien Importieren in Excel - erste Zeile weg lassen!
gelöst Frage von micha020983VB for Applications4 Kommentare

Hallo zusammen, ich hab immer wiederkehrend mehrere Semikolongetrennte Textdateien, welche ich untereinander in Excel brauche! Klappt hiermit schon ganz ...

VB for Applications
Abschnitte aus Textdatei in Excel importieren
Frage von Einstein77VB for Applications3 Kommentare

Hallo, Ich habe ein Problem wo ich mangels VBA kenntissen nicht weiter komme. Ich muß Email Daten auswerten. Aus ...

Batch & Shell
Textdatei Zeile für Zeile auslesen
Frage von RIPUEDBatch & Shell

Hallo, ich würde gerne mit einem Batch-Skript Zeilen aus einer Textdatei einzeln und nacheinander auslesen und diese dann nach ...

Microsoft Office
Excel Zeilen in eine Zeile anzeigen
gelöst Frage von rw72Microsoft Office2 Kommentare

Hallo, ich habe eine Excel Tabelle mit dem Aufbau Nummer Text 0000001 Test2 0000001 Test1 0000002 Titel 0000002 Titel2 ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 19 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 21 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Sichere Remote Desktop Verbindung wie?
gelöst Frage von nuss33Windows Server11 Kommentare

Hallo zusammen, eins vorweg: Ich besitze einen privaten Windows Server 2008 R2 zu Hause im Netzwerk er wird nicht ...