Live-Forum - Die aktuellen Beiträge
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
Inhaltsverzeichnis

Text in Spalten fuer mehrere Tabellenblätter

Text in Spalten fuer mehrere Tabellenblätter
26.06.2007 03:29:00
Gábor
Hallo liebe Experten,
ich habe folgendes Problem: ich muss Daten aus 20 Tabellen in 20 Arbeitsblätter (meiner Datei)importieren. Die Daten stehen alle in Spalte A der Originaldateien (durch Leerzeichen getrennt). Wie kann ich die Daten per VBA trennen und in die jeweiligen Blätter importieren. Ich habe folgendes Makro (teilweise mit dem Recorder aufgezeichnet) zusammen gestellt(Dieses makro läuft für alle 20 Blätter nacheinander [20 mal]ab).
Sub datenimport_1()
Dim i As String
Dim k As String
'1
ThisWorkbook.Activate
Sheets("1").Select
'Blatt 1 von insgesamt 20
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
Sheets("import").Select 'Pfad und Dateiname stehen hier nacheinander, beginnend in Zeile 2
i = Range("A2") 'hier steht der komplette Pfad der Datei, welche geoeffnet werden soll.
k = Range("E2") 'hier steht der Name der Datei, welche nach dem Datenimport wieder geschlossen werden soll.
Workbooks.Open i
Columns("A:A").Select
Selection.Copy
ThisWorkbook.Activate
Sheets("1").Select
ActiveSheet.Paste
'text in spalten
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), _
Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array( _
46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), _
Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1), Array( _
59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65, 1), _
Array(66, 1), Array(67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1), Array( _
72, 1), Array(73, 1), Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1), Array(78, 1), _
Array(79, 1), Array(80, 1), Array(81, 1), Array(82, 1), Array(83, 1), Array(84, 1), Array( _
85, 1), Array(86, 1), Array(87, 1), Array(88, 1), Array(89, 1), Array(90, 1), Array(91, 1), _
Array(92, 1), Array(93, 1), Array(94, 1), Array(95, 1), Array(96, 1), Array(97, 1), Array( _
98, 1), Array(99, 1), Array(100, 1), Array(101, 1), Array(102, 1), Array(103, 1), Array(104 _
, 1), Array(105, 1), Array(106, 1), Array(107, 1), Array(108, 1), Array(109, 1), Array(110, _
1)), TrailingMinusNumbers:=True
'
Sheets("import").Select
Workbooks(k).Close savechanges:=False 'die Datei wird wieder geschlossen

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text in Spalten fuer mehrere Tabellenblätter
26.06.2007 11:03:27
Hajo_Zi
Hallo Gábor,
nach dem lesen liest sich das wie, Daten Text in Spalten. Ich vermute mal eine Beispieldatei wäre da hilfreiche gewesen. Auf Select kann in VBA zu 99,9% verzichtet werden.

AW: Text in Spalten fuer mehrere Tabellenblätter
26.06.2007 16:19:00
Gábor
Hallo Hajo,
danke fuer dein erstes Feedback. Eine Beispieldatei kann ich leider nicht hochladen (verdraulige Daten). Ich denke der relativ grosse "unsaubere" CODE schreckt hier viele ab sich die Frage genauer durchzulesen und eine Antwort zu geben. Ich versuch es nocheinmal. Also:
0. Startdatei ist geoeffnet - klick auf Button X
1. per VBA wird eine Datei geoeffnet, der Pfad steht im Blatt import in A2.
2. in der nun geöffneten Datei stehen alle benötigten Daten in der Spalte A (in jeder Zelle stehen viele Informationen, welche durch Leerzeichen getrennt sind). Diese Daten werden kopiert und in die Spalte A der Startdatei (Tabellenblatt 1) eingefügt.
3. Im Tabellenblatt 1 der Startdatei muessen jetzt Die Daten getrennt werden (Daten - Text in Spalten), so entstehen etwa 110 beschriebene Spalten.
4. Jetzt wird die Datei, aus welcher der Datensatz stammt wieder geschlossen. Der Dateiname steht in Startdatei, Blatt import Zelle E2. Pfad und Dateiname wurden am Anfang an Variablen uebergeben (i und k).
im Blatt import stehen 20 Pfade (Variable i = A2 bis A22) und zum schliessen die 20 Dateinamen
(Variable k = E2 bis E22).
5. Die zweite Datei wird geoeffnet (Pfad steh in import A3)
6. Die Daten werden ins Blatt 2 der Startdatei geschrieben u.s.w.
Mir waere auch schon geholfen, wenn ich Daten-Text in Spalten als VBA Code bekaeme.
Gábor

Anzeige
AW: Text in Spalten fuer mehrere Tabellenblätter
Hajo_Zi
Hallo Gábor,
ich sehe nun icht mehr den ersten Beitrag aber der ode für daten Text in spalten Stand da doch schon.
unter 1 hast Du gesvchriebender Dateiname steht in A2 und unter 4 steht er ganz woanders?
Gruß Hajo

AW: Text in Spalten fuer mehrere Tabellenblätter
26.06.2007 16:59:31
Gábor
Hajo,
der Dateiname inklusive Pfad steht in Spalte A (beginnend in A2)
Wenn ich die Datei schliesen möchte, kann ich doch nicht sagen schliese den Pfad. In E steht nur der letzte Rest von A2, eben nur der Name der Datei. Am Ende wird diese ja wieder geschlossen.
Sheets("import").Select 'Pfad und Dateiname stehen hier nacheinander, beginnend in Zeile 2
i = Range("A2") 'hier steht der komplette Pfad der Datei, welche geoeffnet werden soll.
k = Range("E2") 'hier steht der Name der Datei, welche nach dem Datenimport wieder geschlossen werden soll.
Workbooks.Open i
.
.
.
Workbooks(k).Close savechanges:=False 'die Datei wird wieder geschlossen
Gábor

Anzeige
AW: Text in Spalten fuer mehrere Tabellenblätter
26.06.2007 18:33:15
Gábor
Hallo Hajo,
ich habe einmal alles unnoetige aus der Datei geworfen, so dass ich sie jetzt hochladen kann.
https://www.herber.de/bbs/user/43604.xls
Kannst du dir die Sache noch einmal ansehen? Andere Experten bitte ich auch um eine Loesung.
Danke Gábor

AW: Text in Spalten fuer mehrere Tabellenblätter
Hajo_Zi
Hallo Gábor,
für mich sieht das in Spalte A nicht wie Dateiname mit Ordner aus.
Ich bin jetzt in meinem Code davon ausgegangen das es so ist und alle Tabellen schon vorhanden sind. Es werden jetzt alle Dateien nacheinander importier,hoffe ich mal. Ich kann es nicht testen.

Option Explicit
Sub datenimport_1()
Dim Loletzte As Long
Dim Loi As Long
With ThisWorkbook
With .Sheets("import")
Loletzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp). _
Row, .Rows.Count)
End With
For Loi = 2 To Loletzte
With Worksheets(Loi - 1)
.Cells.Selection.Delete Shift:=xlUp
Workbooks.Open Cells(Loi, 1)
Columns("A:A").Copy .Range("A1")
'text in spalten
.Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited,  _
_
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1),  _
Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, _
1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1),  _
Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25,  _
1), Array(26, 1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array( _
32, 1), Array( _
33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1) _
, Array(39, 1), _
Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array( _
45, 1), Array( _
46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1) _
, Array(52, 1), _
Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array( _
58, 1), Array( _
59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1) _
, Array(65, 1), _
Array(66, 1), Array(67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array( _
71, 1), Array( _
72, 1), Array(73, 1), Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1) _
, Array(78, 1), _
Array(79, 1), Array(80, 1), Array(81, 1), Array(82, 1), Array(83, 1), Array( _
84, 1), Array( _
85, 1), Array(86, 1), Array(87, 1), Array(88, 1), Array(89, 1), Array(90, 1) _
, Array(91, 1), _
Array(92, 1), Array(93, 1), Array(94, 1), Array(95, 1), Array(96, 1), Array( _
97, 1), Array( _
98, 1), Array(99, 1), Array(100, 1), Array(101, 1), Array(102, 1), Array( _
103, 1), Array(104 _
, 1), Array(105, 1), Array(106, 1), Array(107, 1), Array(108, 1), Array(109, _
1), Array(110, _
1)), TrailingMinusNumbers:=True
ActiveWorkbook.Close False
End With
Next Loi
End With
End Sub


Gruß Hajo

Anzeige
AW: Text in Spalten fuer mehrere Tabellenblätter
27.06.2007 02:22:00
Gábor
Hajo,
hab vielen Dank. Ich habe mich an deinem Makro etwas orientiert und die Sache letztendlich zum laufen gebracht.
Hier der Code - vielleicht koennen andere was damit anfangen.

Sub datenimport_1()
Dim i As String
Dim k As String
Dim m As Long
Dim n As Long
m = 3
n = 2
'Blatt 2 bis 23
For m = 3 To 22
ThisWorkbook.Activate
Sheets(m).Select
'Blatt 1 von insgesamt 20
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
Sheets("import").Select
i = Cells(n, 1) '("A2") hier steht der komplette Pfad
k = Cells(n, 5) '("E2") hier steht der Dateiname
Workbooks.Open i
Columns("A:A").Select
Selection.Copy
ThisWorkbook.Activate
Sheets(m).Select
ActiveSheet.Paste
'text in spalten
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array( _
13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1),  _
Array _
(20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, _
1), _
Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1),  _
Array( _
33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39,  _
1), _
Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1),  _
Array( _
46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52,  _
1), _
Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1),  _
Array( _
59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65,  _
1), _
Array(66, 1), Array(67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1),  _
Array( _
72, 1), Array(73, 1), Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1), Array(78,  _
1), _
Array(79, 1), Array(80, 1), Array(81, 1), Array(82, 1), Array(83, 1), Array(84, 1),  _
Array( _
85, 1), Array(86, 1), Array(87, 1), Array(88, 1), Array(89, 1), Array(90, 1), Array(91,  _
1), _
Array(92, 1), Array(93, 1), Array(94, 1), Array(95, 1), Array(96, 1), Array(97, 1),  _
Array( _
98, 1), Array(99, 1), Array(100, 1), Array(101, 1), Array(102, 1), Array(103, 1), Array( _
104 _
, 1), Array(105, 1), Array(106, 1), Array(107, 1), Array(108, 1), Array(109, 1), Array( _
110, _
1)), TrailingMinusNumbers:=True
Sheets("import").Select
Workbooks(k).Close savechanges:=False
n = n + 1
Next m
End Sub


Danke fuer die Muehe
Gábor

Anzeige

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige