Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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
Inhaltsverzeichnis

Text in Spalten über mehrere Arbeitsblätter und Spalten

Text in Spalten über mehrere Arbeitsblätter und Spalten
15.12.2020 16:04:01
Alex
Text in Spalten über mehrere Arbeitsblätter und Spalten
Hallo,
ich habe ein Problem mit den Zellinhalten. Die Excel Datenblätter wurden aus einem PDF heraus konvertiert. Excel erkennt die Zellinhalte nicht, hier habe ich recherchiert und bin fündig geworden. Mittels der Funktion "Text in Spalten" lassen sich die Inhalte von Excel verarbeiten. Das Problem ist jedoch das Text in Spalten nur auf einem Arbeitsblatt mit einer Spalte funktioniert. Da ich jedoch 281 Arbeitsblätter a 12 Spalten habe könnte das etwas länger dauern...
Ich habe dafür einen VBA Code gefunden der das auch einigermaßen gut macht:
Option Explicit

Public Sub TextInSpalten_Workbook()
Dim wsh As Worksheet
For Each wsh In ActiveWorkbook.Worksheets
TextInSpalten_Worksheet wsh
Next wsh
End Sub


Private Sub TextInSpalten_Worksheet(oWorksheet As Worksheet)
With oWorksheet
.Activate
.Columns("A:A").Select
On Error Resume Next
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1))
On Error GoTo 0
.Range("A1").Select
End With
End Sub

... leider kann ich den Code nicht ganz nach vollziehen. Beim ausführen klappt das auch dass er alle Blätter in Spalte A bearbeitet. Bei dem Versuch den Code so anzupassen dass er alle Spalten anpasst bin ich leider gescheitert. Hier mein Versuch:
Option Explicit

Public Sub TextInSpalten_Workbook()
Dim wsh As Worksheet
For Each wsh In ActiveWorkbook.Worksheets
TextInSpalten_Worksheet wsh
Next wsh
End Sub


Private Sub TextInSpalten_Worksheet(oWorksheet As Worksheet)
Dim Zähler
For Zähler = 1 To 18
With oWorksheet
.Activate
'.Columns("A:A").Select
.Range(Columns(Zähler), Columns(Zähler)).Select
On Error Resume Next
Selection.TextToColumns Destination:=Range(Cells(1, Zähler)), DataType:=xlDelimited, _
_
_
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1))
On Error GoTo 0
.Cells(1, Zähler).Select
End With
Next
End Sub

Bin für jeden Tipp dankbar der mir hier weiterhilft
Beste Grüße

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Spalten über mehrere Arbeitsblätter und Spalten
15.12.2020 16:07:31
Alex
... ach ja hätte ich fast vergessen. Beim ausführen des Makros kommt häufiger die Nachfrage von Excel ob dies oder jenes überschreiben darf. Kann man das irgendwie so konfigurieren dass er das immer ohne nachzufragen darf?
AW: Text in Spalten über mehrere Arbeitsblätter und Spalten
15.12.2020 18:58:21
Yal
Hallo Alex,
das Problemchen ist, dass wenn Du die Spalte A expandierst, die Spalte B,C,D,... überschrieben werden, daher die Nachfrage à la "Ist das Kunst oder kann das Weg?"
Zweite Problem ist der Parameter Fieldinfo. Er ist auf 5 Spalten festgelegt. Ist das immer so?
Es ist ein "optional", wenn es nicht vorhanden ist, wird jedesmal aufs neu geschätzt, was zu tun ist. Weg damit.
Genauso wie Du eine Schleife über die Worksheets hast, könntest Du /solltest Du diese Schleife ausserhalb der Verarbeitende Function haben. Dann bist Du flexibler.
Meldung unterdrückt man mit
Application.DisplayAlerts = False
Nicht vergessen, am Ende wieder auf true zu setzen.
Viel Erfolg
Yal
Anzeige
AW: Text in Spalten über mehrere Arbeitsblätter und Spalten
17.12.2020 09:40:38
Alex
Hallo Yal,
vielen Dank für die Anregungen.
Du hast Recht das es an der Field Info liegt, wenn ich die Arrays jedoch anpasse werden manche Spalten bei Variante1 überschrieben, bei Variante2 werden die Zellinhalte teilweise nach wie vor nicht erkannt.
Variante1
Selection.TextToColumns Destination:=Range("D1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(6, 1), Array(12, 1), Array(21, 1), Array(27, 1)), _
TrailingMinusNumbers:=True
Variante2
Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
TrailingMinusNumbers:=True
Hat vielleicht noch jemand eine Idee?
Beste Grüße
Anzeige
AW: Text in Spalten über mehrere Arbeitsblätter und Spalten
17.12.2020 10:05:22
Yal
Hallo Alex,
also es scheint, die Trennung nach fester Breite ist die Lösung. Es andert nicht, dass wenn aus einer Spalte mehrere gemacht werden müssen, diese frei sein sollen.
Idee: bevor die Spalte A expandiert wird, 10 Spalten zwischen A und B einfügen, danach prüfen, welche von diese Spalten vollständig leer sind und löschen.
VG
Yal
AW: Text in Spalten über mehrere Arbeitsblätter und Spalten
17.12.2020 16:41:27
Alex
... werde ich mal testen.
Mich würde dennoch mal interessieren was es mit dieser FieldInfo auf sich hat, was verbirgt sich genau hinter diesen Arrays ? ... für was stehen die Zahlen? finde weder im web noch in der Hilfe was brauchbares...
Anzeige
AW: Text in Spalten über mehrere Arbeitsblätter und Spalten
17.12.2020 17:10:39
Yal
Alex,
da muss Du nicht im Web dich durchlesen. Es reicht, wenn Du den Code liesst, besonders bei der Unterschied zwischen Lösung 1 und 2.
VG
Yal

343 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige