Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
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

Tabellenblatt auslesen

Tabellenblatt auslesen
Jens
Schönen Guten Tag, (mal wieder)
heute habe ich eine Frage zum Thema auslesen von Tabellenblättern --> Daten ändern --> einen Teil der Daten wieder zurück kopieren!!
Ich habe da ein Makro:
Sub Auslesen()
Dim lvarDatei
Dim liZeile As Integer
Dim liAnzahl As Integer
Dim g As Integer
Dim s As Integer
Dim i As Integer, wkbQ As Workbook, wksQ As Worksheet, wksZ As Worksheet
Set wksZ = ThisWorkbook.Sheets("Planung")
Sheets("Steuerung").Select
Range("A9:A84").Select
Selection.ClearContents
Calculate
Application.ScreenUpdating = False
lvarDatei = Application.GetOpenFilename("Excel-Dateinen (*.xls),*xls", , "Öffnen Sie eine  _
Excel-Datei", "Öffnen")
If lvarDatei = False Then Exit Sub
Workbooks.Open lvarDatei
Workbooks(1).Activate
Range("B3").Value = lvarDatei
liZeile = 1
For liAnzahl = 1 To Workbooks(2).Sheets.Count
Range("A" & liZeile + 8).Value = Workbooks(2).Sheets(liZeile).Name
liZeile = liZeile + 1
Next
Calculate
g = ThisWorkbook.Sheets("Steuerung").Cells(5, 3)
h = ThisWorkbook.Sheets("Steuerung").Cells(6, 3)
' For i = g To h
' Application.DisplayAlerts = False
'hier soll dann das Auslesen rein!!!
' Next
Workbooks(2).Close SaveChanges:=False
Application.ScreenUpdating = True
End Sub
diese liest aus einer Datei die Arbeitsblattnamen aus und schreibt mir diese in das Tabellenblatt (Steuerung). Das funktioniert super.
Nun würde ich gern aus einem Teil der Blätter die ich gerade aufgelistet habe, da nicht alle relevant sind, von Zeile bis Zeile (dies habe ich schon im Tabellenblatt Steuerung in Feld C5 und C6 festgelegt) Informationen herauskopieren und zwar immer Spalte B und Zeile 8 bis 80) diese Informationen sollen dann in das Tabllenblatt Req in Zeile 8 bis 80 ab Spalte B, wobei in Zeile 6 immer der Tabellenblattname stehen sollte von dem Blatt was ausgelsen wurde, kopiert werden.
Dort würde ich dann einen Teil der Daten ändern
In einem zweiten Makro müsste ich dann die Zeilen 10-15; 30-35; und 60-65 wieder zurück in das jeweilige Tabellenblatt kopieren.
Kann man so etwas machen? Könnte man auch im ersten Makro nicht nur eine Spalte pro Tabellenblatt sondern 3 kopieren und somit immer 3er Blöcke kopieren, ändern und wieder zurück kopieren.
Wenn da jemand eine Idee hat, würde mir das wirklich weiterhelfen. Vielen Dank.
Jens

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabellenblatt auslesen
11.08.2011 15:30:13
Oberschlumpf
Hi Jens
Es ist ja nicht gerade wenig, was du mit uns erreichen möchtest.
Zeig uns doch mal bitte (d)eine (Bsp)datei - inklusive der (Bsp)daten + inklusive des Codes, den du schon hast.
Denn wie sollen wir für dich einen Code an der Stelle im Code, wo du es haben möchtest, entwickeln, wenn wir a) gar keine Daten haben, mit denen wir testen können, b) wir nur so ungefähr wissen, wo sich denn die Daten befinden.
Ohne deine Datei müssten wir erst eine Datei nachbauen, die möglichst so wie deine aussieht - aber diese Zeit könnten wir uns doch auch sparen, und sofort mit der Lösung beginnen - wenn wir denn deine Datei hätten.
Und was meinst du mit "(dies habe ich schon im Tabellenblatt Steuerung in Feld C5 und C6 festgelegt)"?
Siehst du? Ich sehe deine Datei nicht, weiß nicht, was in C5 + C6 drin steht, müsste diese Info aber mit in die Programmierung übernehmen, da du es ja so möchtest.
Ciao
Thorsten
Anzeige
AW: Tabellenblatt auslesen
11.08.2011 16:13:45
Jens
Hallo Thorsten,
vielen Dank für dein Mail. Ich habe die Daten auf den Server geladen, einmal die Datei mit der ich gern auslesen möchte:
https://www.herber.de/bbs/user/76132.xls
und hier zwei Test Dateien einmal mit nur einer Spalte einmal mit drei Spalten
https://www.herber.de/bbs/user/76133.xls
https://www.herber.de/bbs/user/76134.xls
IN der 76132 funktioniert nur der eine Button, mit dem ich die Daten auslese, die anderen sind schon mal für später. Wenn das zu aufwendig oder kompliziert ist, dann werde ich es auch weiterhin manuell machen, das geht auch. Ich hatte nur die Idee das man hier für mich etwas auf einfache Art und Weise einfacher machen könnte.
Vielen Dank
Jens
Anzeige
AW: Tabellenblatt auslesen
11.08.2011 16:50:18
Oberschlumpf
Hi Jens
So, danke für die Dateien (bin froh, dass ich danach fragte, denn nun hab ich weitere Fragen, die ich nich gewusst hätte, wenn ich die Dateien nich sehen würde)
FRAGE 1
-----------
Du schreibst
a) Nun würde ich gern aus einem Teil der Blätter...von Zeile bis Zeile (dies habe ich schon im Tabellenblatt Steuerung in Feld C5 und C6 festgelegt) Informationen herauskopieren
b) und zwar immer Spalte B und Zeile 8 bis 80)
In C5 + C6 stehen die Werte 13 +16
Also möchtest du, laut a) die Zeilen 13 bis 16 auslesen.
Aber laut b) möchtest du wiederum die Zeilen 8 bis 80 auslesen.
Was denn nun? (oder...was habe ich nicht verstanden?)
FRAGE 2
-----------
Du schreibst, dass du anstelle von einer lieber drei Spalten auslesen würdest.
a) Welche Spalten außer Spalte B sind das denn? Das hast du nicht mit hinzugeschrieben.
b) Und wohin sollen dann die zusätzlichen zwei Spalten hinkopiert werden?
Schreib mir bitte anhand der ersten Bsp-Datei auf, wohin genau was kopiert werden soll. Nenn mir also bitte die Namen der Arbeitsblätter und die jeweiligen Spaltenüberschriften aus der Bsp-Datei, wo was hin soll.
c) Was genau sollen die zusätzlichen Button machen?
Wozu brauchst du 1x Req-Button, 2x SAL-Button und dann noch mal zusätzlich 3x Daten einlesen-Button?
Ciao
Thorsten
Anzeige
AW: Tabellenblatt auslesen
12.08.2011 08:43:56
Jens
Hallo Thorsten,
erst noch mal vielen Dank für deine Antwort und deine Fragen, in meiner kleinen Welt ist das was ich da aufgeschrieben habe total logisch, aber du hast recht wenn man das Thema verstehen will braucht man noch mehr Informationen.
Noch mal ganz grob:
Ich benötige eine Excel Datei, die mir die Tabellennamen von einer Datei eines ganz bestimmten Formates ausliest. In einem zweiten schritt möchte ich gern aus einigen dieser Tabellenblätter (nur denen die nicht mit SUB beginnen) bestimmte Spalten in die Tabellenblätter Req und Sal kopieren und dort Änderungen vornehmen. In einem dritten Schritt soll nun ein Ausschnitt aus Req und Sal wieder zurück in die Ursprungsdatei kopiert werden.
Im Detail:
Was ich schon habe ist der Teil in dem ich die Blattnamen auslesen und mir diese in das Tabellenblatt Steuerung schreiben lasse. In dem Tabellenblatt Steuerung sind in der Spalte B und C noch Formeln die mir die Namen mit a markieren die für mich relevant sind (alle die nicht mit Sub beginnen). Dieser Bereich Zeile 13 – 16 wird mir in den Feldern C5 und C6 angezeigt. Damit könnte ich dies im Makro zum auslesen benutzten (hatte ich so gedacht). Kann man aber sicherlich auch ganz anders machen.
Ich habe zwei unterschiedliche Dateitypen. Einmal mit nur einer relevanten Spalte, einmal mit 3 relevanten Spalten pro Tabellenblatt.
Mit den Button Req und Sal soll nun der Kopiervorgang gestartet werden.
Mit dem Button Req sollen aus der ausgewählten Datei die Tabellenblätter angesteuert werden die wie gesagt nicht mit SUB beginnen (mit a in Steuerung markiert) und jeweils die Spalte B8:80 in das Tabellenblatt Req ab Spalte B eingefügt werden. In Zeile 6 vom Tabellenblatt Req sollte noch stehen aus welchem Blatt die Werte stammen.
Mit dem Button SAL sollen aus der ausgewählten Datei die Tabellenblätter angesteuert werden die wie gesagt nicht mit SUB beginnen (mit a in Steuerung markiert) aber hier immer jeweils die Spalten B6:B80; E6:E80; I6:I80 kopiert und in das Tabellenblatt SAL2 pro Tabellenblatt kopiert werden (immer die drei Spalten zusammen nacheinander). In Zeile 4 sollte noch stehen aus welchem Blatt die Werte stammen.
Nun würde ich Änderungen vornehmen
In einem abschließenden Schritt müssen aus den Tabellenblättern Req und Sal die Daten aus bestimmten Zeilen (für alle Spalten gleich ab Spalte B) – am besten über eine Eingabemöglichkeit auswählbar( z.B. Zeile 17:20) -- in die Ursprungsdatei in das richtige Tabellenblatt an die richtige Stelle zurückkopiert werden (vielleicht am besten auch über eine Eingabemöglichkeit auswählbar( z.B. Zeile 17:20).
Mittlerweile glaube ich fast das sich mein sehr klein gedachtes Makro zu einem ganzen Programm entwickelt. Ich brauche ja vielleicht auch gar nicht alles aber so ein paar Ansätze wären echt toll.
- wie kann ich die Tabellenblätter auslesen und nach Req und Sal kopieren
- vor allem einmal nur eine Spalte einmal drei
- wie bekomm ich die Daten wieder in die Ausgangsdatei an die richtige Stelle
Es wäre wirklich super, wenn ich da noch ein wenig Hilfe bekommen könnte. Vielen Dank.
LG Jens
Anzeige
AW: Tabellenblatt auslesen
12.08.2011 10:08:33
oberschlumpf
Hi Jens
Du schreibst:
In einem zweiten schritt möchte ich gern aus einigen dieser Tabellenblätter (nur denen die nicht mit SUB beginnen) bestimmte Spalten in die Tabellenblätter Req und Sal kopieren und dort Änderungen vornehmen.
Tja, und wieder lässt du uns nicht an deiner kleinen Welt teilhaben.
Ich weiß noch immer nicht, welche Spalten du mit bestimmten Spalten meinst.
Ich bat dich außerdem, deine Antwort so zu formulieren, dass du z Bsp schreiben könntest:
- Spalte ? aus der gewählten Datei soll in Datei mit Makro in Req in Spalte ?
(die ? hättest du mit den Spaltenüberschriften ersetzen müssen)
Na ja, du hast leider nicht so geantwortet. Aber so wäre es kurz und knackig und verständlich gewesen.
Ciao
Thorsten
Anzeige
AW: Tabellenblatt auslesen
12.08.2011 11:19:38
Jens
Hallo Thorsten,
nochmal danke für deinen Hinweis.
Wenn ich schreibe ich möchte die Spalte B8:B80 kopieren, dann ist das für mich sehr eindeutig und wenn ich dann noch schreibe ich möchte aus der anderen Datei die Spalten B6:80; E6:80 und I6:80 dann ist das für mich auch eindeutig.
Anders formuliert:
Aus der Req-Beispiel Datei soll in dem Fall aus Tabellenblatt "1" die Spalte B in Tabellenblatt Req Spalte B; aus Tabellenblatt "2" die Spalte B in Tabellenblatt Req Spalte C usw. Aus der SAL-Beispiel Datei soll aus Tabellenblatt "1" die Spalte B;E und I nach Sal2 Spalte B;C;D aus Tabellenblatt "2" die Spalte B;E und I nach Sal2 Spalte E;F;G usw.
Hilft das vielleicht, um die Unklarheiten zu beseitigen.
Gruß Jens
Anzeige
AW: Tabellenblatt auslesen
12.08.2011 23:27:54
Oberschlumpf
Hi Jens
Jo, haste recht, ich hatte zuerst das überlesen, wonach ich fragte.
Trotzdem.
Dein letzter Absatz - kurz + knackig + verständlich + ohne so viel Schnick Schnack drum herum - so gefällt es mir am besten.
Es gibt aber noch immer einige Fragen. Dazu später mehr.
Hier jetzt erst mal meine Dateien, Teil 1
Steuerungsdatei mit Makros
Datei mit 1 Spalte zum Einlesen
Datei mit 3 Spalten zum Einlesen
Teil 1 deswegen, weil ich erst mal nur dafür programmiert habe, dass die 2 Dateien (mit 1 Spalte + mit 3 Spalten) eingelesen werden können.
Ich möchte erst mal wissen, ob das denn so richtig ist.
Verstanden habe ich:
1. Klick auf Button "Daten auslesen" liest die Blattnamen der jeweils augewählten Datei aus (dein Code)
2a Klick auf Button "Req" soll gedrückt werden, um die für dich interessanten Daten der 1-spaltigen Datei in das Blatt Req zu übertragen (Voraussetzung ist, dass zuvor mit Button "Daten auslesen" auch eben die 1-spaltige Datei ausgewählt wurde)
2b Klick auf Button "Sal2" soll gedrückt werden, um die für dich interessanten Daten der 3-spaltigen Datei in das Blatt Req zu übertragen (Voraussetzung ist, dass zuvor mit Button "Daten auslesen" auch eben die 3-spaltige Datei ausgewählt wurde)
Um bei 2a+b sichergehen zu können, dass zuvor auch die richtige Datei ausgewählt wurde, habe ich zum Start der Datei die Button "Req" + "Sal2" deaktiviert, damit eben nicht der falsche Button angeklickt werden kann.
Erst, nachdem du die 1-spaltige oder die 3-spaltige Datei ausgewählt hast, wird entweder der "Req"-Button oder der "Sal2"-Button aktiviert + ist anklickbar.
Du wunderst dich vllt, wieso ich immer von "Sal2"-Button schreibe. Na ja, ich wunderte mich, dass es in deiner Datei 2 Button gibt, die beide "Sal" heißen - deswegen hatte ich den unteren in "Sal2" umbenannt. Wenn 2x "Sal" gewünscht + richtig war, dann kannst du ihn ja wieder umbenennen.
Noch immer nicht verstanden habe ich die 3 Button "Daten einlesen".
Denn die Daten werden ja vom "Reg"- und "Sal2"-Button eingelesen.
Tut meine Datei denn bis jetzt das, was du erreichen wolltest?
Teste erst mal mit "meinen" 3 Dateien. Denn die tun genau das, was ich hier beschrieben habe.
Da ich nicht weiß, ob die Testdateien zu 100% deinen Originaldateien entsprechen (also gleiche Zeilen, Spalten, Überschriften, Farben etc), kann es durchaus sein, dass mein Code für dein Original vllt angepasst werden muss.
Ciao
Thorsten
Anzeige
AW: Tabellenblatt auslesen
15.08.2011 08:50:51
Jens
Hallo Thorsten,
erstmal vielen herzlichen Dank für die Umsetzung. Das funktioniert soweit super. Ich finde auch die Lösung beim Auslesen toll die verhindert das man den falschen Button drückt. Kann man die Bezeichnung aktuell "Req" im Quellcode uneingeschränkt ändern?
Den Sal Button werde ich vielleicht brauchen, aber Req und Sal2 auf jeden Fall.
So nun zu Punkt 3:
Nachdem die Daten in den Tabllenblätter Req und Sal2 gelandet sind, möchte ich die Werte dort ändern/anpassen , Danach und das is jetzt der eigentliche Schritt 3 möchte ich gern einen Teil der Daten z.B. aus Tabellenblatt Req die Zeilen 50 - 68 pro ausgelesender Spalte wieder zurück in die Original Datei schieben und zwar an die richtige Stelle.
Also von SteuerDatei Tabellenblatt Req Spalte B nach Datei mit 1 Saplte zum Einlesen Tabellenblatt 1
Also von SteuerDatei Tabellenblatt Req Spalte C nach Datei mit 1 Saplte zum Einlesen Tabellenblatt 2
Also von SteuerDatei Tabellenblatt Req Spalte D nach Datei mit 1 Saplte zum Einlesen Tabellenblatt 3
usw.
Genau so auch für Tabellenblatt Sal2
Der Bereich (Zeile 50 bis 68 kann ich jedoch ändern, deshalb wäre es super wenn man das über eine Eingabe Box machen könnte um die Zeilen Auszuwählen.
Ich hoffe das erklärt, was ich nun noch benötige. Vielen Dank für die Hilfe und einen hoffentlich sonnigen Tag
Jens
Anzeige
AW: Tabellenblatt auslesen
15.08.2011 21:51:01
Oberschlumpf
Hi
Heut schaff ich nix mehr....morgen vielleicht.
Ciao
Thorsten
AW: Tabellenblatt auslesen
16.08.2011 10:22:28
Jens
Hallo Thorsten,
es wäre wirklich super wenn du mir auch für den 3ten Teil helfen könntest.
Vielen Dank
jens
AW: Tabellenblatt auslesen
16.08.2011 21:30:50
Oberschlumpf
Hi Jens
guckst du hier:
https://www.herber.de/bbs/user/76216.xls
(als Grundlage zum Testen gelten weiterhin die schon vorher upgeloadeten Dateien 1-spalte + 3-spalten)
Ich hab es so verstanden (am Bsp der 1-spaltigen Datei):
1. du öffnest im Blatt Steuerung die 1-spaltige Datei + sie wird ins Blatt Req eingelesen
2. du wechselst ins Req-Blatt
3. du änderst Werte, z Bsp in den Zeilen 10,11 + 16
4. du klickst im Req-Blatt auf den Button Werte zurückschreiben
5. es öffnet sich ein Userform + es erwartet die Werte für Zeilenstart + ende
6. du gibst als Start = 10 + als Ende = 16 ein
7. mein Code schreibt aus dem Req-Blatt die Werte aus den Zeilen 10 bis 16 in die 1-spaltige Datei ins richtige Blatt + in die jeweils richtigen Zeilen (Zellen) zurück
es werden also auch die Werte aus den Zeilen 12 bis 15 zurück geschrieben, obwohl gar nicht verändert
Habe ich es so richtig verstanden?
Beachten musst du aber, dass
....du im Req- und im Sal-Blatt nicht in die Zeilen Werte schreiben darfst, wo die Zelle in Spalte = leer ist
....du für im Userform für Start- + Endzeile immer Start = niedriger Wert als Endzeile eingeben musst
wenn Start größer als Ziel, dann Fehler
Damit du den Code vllt besser verstehen kannst, hab ich sehr viel im Code dokumentiert.
Hast du denn meine Code-Dokumetation verstanden?
Und vor allem...läuft nun alles?
Ach so...du fragtest, ob die Bezeichnung "Req" im Code geändert werden kann.
Wenn du im Code den Text "Req" findest, handelt es sich immer um eine Referenzierung zum Blatt Req.
Das bedeutet, wenn dein Original-Blatt, welches in der Testdatei "Req" heißt, nicht auch "Req" heißt, dann musst du entweder...
...dein Originalblatt auch in "Req" umbenennen, oder
...alles im Code, was "Req" heißt, so ändern, dass anstelle von "Req" = "DeinBlattname" steht.
Ciao
Thorsten
Anzeige
AW: Tabellenblatt auslesen
17.08.2011 09:19:14
Jens
Hallo Thorsten,
erst einmal vielen vielen herzlichen Dank für die super Hilfe von dir. Das ist echt klasse und bei den Test Dateien funktioniert auch alles hervorragende.
Eine sache habe ich jedoch im Moment, hatte nicht angenommen das dies ein Problem sein könnte. Wenn der Tabellenname in den Tabellen die ich auslesen möchte z.B. "a de 2" heißt dann bricht der Code beim Einlesen ab bzw. Excel stürzt sogar ab. Würdest du bitte da nochmal assistieren.
Vielen herzlichen Dank.
AW: Tabellenblatt auslesen
17.08.2011 17:44:49
Oberschlumpf
Hi Jens
Warum nennst du die Blattnamen etc in den Bsp-dateien nicht genau so wie in den Originaldateien?
Von Anfang an meine ich - also von dem Moment, als du die Bsp-Dateien das erste mal gezeigt hast.
Jetzt musst du alles ändern.
Denn ich kann wieder mal nur vermuten.
Du schreibst "...z.B. "a de 2"..."
Heißt das, das Blatt "a de 2" kann auch anders heißen? Denn der Zusatz z Bsp deutet ja an, dass etwas so oder so oder so heißen kann.
Tja, wenn deine Req-Blattnamen viele verschiedene Bezeichnungen haben (können), dann hast du ein Problem, bzw dann hätte mein Code ganz anders aufgebaut werden.
Ich kann jdfalls nur so helfen, als das ich schreiben kann:
Ändere alles, was
Sheets("req")

heißt, um in
Sheets("a de 2")

Wenn du alles richtig gemacht hast, bezieht sich dann der entsprechende Code nicht mehr auf ein Blatt mit Namen "Req" sondern auf ein Blatt mit Namen "a de 2".
Genau das Gleiche musst du tun, wenn das Blatt "Sal2" auf einmal nicht mehr so heißt.
Wie gesagt, ändern musst du es selbst. Ich kann deine Originaldatei ja nicht sehen.
Helfen denn meine Tipps?
Ciao
Thorsten

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige