Thema Datum  Von Nutzer Rating
Antwort
23.02.2011 15:45:54 Saubermacher
NotSolved
23.02.2011 21:15:52 Severus
NotSolved
24.02.2011 13:35:16 Gast88214
NotSolved
24.02.2011 14:33:10 Severus
NotSolved
25.02.2011 10:45:46 Saubermacher
NotSolved
Blau Mehrere txt in eine Arbeitsmappe einfügen.
25.02.2011 14:06:57 Severus
NotSolved
28.02.2011 13:57:15 Saubermacher
NotSolved
28.02.2011 16:36:49 Severus
Solved
01.03.2011 11:54:42 Saubermacher
NotSolved
01.03.2011 12:20:19 Severus
NotSolved

Ansicht des Beitrags:
Von:
Severus
Datum:
25.02.2011 14:06:57
Views:
1038
Rating: Antwort:
  Ja
Thema:
Mehrere txt in eine Arbeitsmappe einfügen.

Option Explicit
    
Sub textdateien_uebernehmen()
Dim lngLaufZahl As Long
Dim strDateiNamen As Variant
Dim trgWB As Excel.Workbook
Dim tmpWB As Excel.Workbook
Dim trgWBName As String
Dim bslashPos As Integer
Dim shName As String
    
On Error GoTo Fehler
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
    
strDateiNamen = Application.GetOpenFilename("Text-Dateien(*.txt*),*.txt*", MultiSelect:=True)
    
If IsArray(strDateiNamen) Then
    For lngLaufZahl = LBound(strDateiNamen) To UBound(strDateiNamen)
        If lngLaufZahl = LBound(strDateiNamen) Then
            Set trgWB = Workbooks.Open(Filename:=strDateiNamen(lngLaufZahl))
            trgWB.Sheets(1).UsedRange.Columns("A").Select
            'Hier das Trennzeichen ggf. ändern und das Format der einzelnen Spalten als Array definieren
            Selection.TextToColumns DataType:=xlDelimited, textqualifier:=xlTextQualifierDoubleQuote, semicolon:=True
            For bslashPos = Len(strDateiNamen(lngLaufZahl)) To 1 Step -1
                If Mid(strDateiNamen(lngLaufZahl), bslashPos, 1) = "\" Then Exit For
            Next bslashPos
            shName = strDateiNamen(lngLaufZahl)
            shName = Right(shName, Len(shName) - bslashPos)
            shName = Left(shName, Len(shName) - 4)
            If Len(shName) > 31 Then shName = Left(shName, 31)
            trgWB.Sheets(1).Name = shName
            trgWB.Sheets(shName).Range("A1").Select
            trgWBName = Application.GetSaveAsFilename(, "Excel-Arbeitsmappe (*.xls),*.xls")
            trgWB.SaveAs trgWBName, xlWorkbookNormal
        Else
            Set tmpWB = Workbooks.Open(Filename:=strDateiNamen(lngLaufZahl))
            tmpWB.Sheets(1).UsedRange.Columns("A").Select
            Selection.TextToColumns DataType:=xlDelimited, textqualifier:=xlTextQualifierDoubleQuote, semicolon:=True
            For bslashPos = Len(strDateiNamen(lngLaufZahl)) To 1 Step -1
                If Mid(strDateiNamen(lngLaufZahl), bslashPos, 1) = "\" Then Exit For
            Next bslashPos
            shName = strDateiNamen(lngLaufZahl)
            shName = Right(shName, Len(shName) - bslashPos)
            shName = Left(shName, Len(shName) - 4)
            If Len(shName) > 31 Then shName = Left(shName, 31)
            tmpWB.Sheets(1).Name = shName
            tmpWB.Sheets(shName).Range("A1").Select
            tmpWB.Sheets(1).Copy After:=trgWB.Sheets(trgWB.Sheets.Count)
            trgWB.Save
            tmpWB.Close False
            Set tmpWB = Nothing
        End If
    Next lngLaufZahl
    
Else
    Set trgWB = Workbooks.Open(Filename:=strDateiNamen)
    trgWB.Sheets(1).UsedRange.Columns("A").Select
    Selection.TextToColumns DataType:=xlDelimited, textqualifier:=xlTextQualifierDoubleQuote, semicolon:=True
    For bslashPos = Len(strDateiNamen) To 1 Step -1
        If Mid(strDateiNamen, bslashPos, 1) = "\" Then Exit For
    Next bslashPos
    shName = strDateiNamen
    shName = Right(shName, Len(shName) - bslashPos)
    shName = Left(shName, Len(shName) - 4)
    If Len(shName) > 31 Then shName = Left(shName, 31)
    trgWB.Sheets(1).Name = shName
    trgWB.Sheets(shName).Range("A1").Select
    trgWBName = Application.GetSaveAsFilename(, "Excel-Arbeitsmappe (*.xls),*.xls")
    trgWB.SaveAs trgWBName, xlWorkbookNormal
End If
Set trgWB = Nothing
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
Exit Sub
Fehler:
MsgBox "Fehlernummer: " & Err.Number & Chr(10) _
& "Fehlerbeschreibung: " & Err.Description & Chr(10) _
& "Verursacht durch: " & Err.Source, vbInformation, "Fehler..."
Err.Clear
Resume Next
End Sub

 

Versuchs mal damit. Severus


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
23.02.2011 15:45:54 Saubermacher
NotSolved
23.02.2011 21:15:52 Severus
NotSolved
24.02.2011 13:35:16 Gast88214
NotSolved
24.02.2011 14:33:10 Severus
NotSolved
25.02.2011 10:45:46 Saubermacher
NotSolved
Blau Mehrere txt in eine Arbeitsmappe einfügen.
25.02.2011 14:06:57 Severus
NotSolved
28.02.2011 13:57:15 Saubermacher
NotSolved
28.02.2011 16:36:49 Severus
Solved
01.03.2011 11:54:42 Saubermacher
NotSolved
01.03.2011 12:20:19 Severus
NotSolved