Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
28.11.2018, 10:44
(Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2018, 10:44 von MisterBurns.)
Na klar ist das möglich. Du könntest zB mal den Makrorekorder verwenden um zu sehen, wie ein neues Tabellenblatt erstellt wird. Auch die Googlesuche nach "Excel Daten in neues Blatt kopieren" dürfte dich hier weiterbringen.
Wenn du danach noch Fragen hast, dann komm gerne damit.
Schöne Grüße Berni
Registriert seit: 21.11.2018
Version(en): das neuste
Hallo Berni, ich habe folgenden Befehl:
Sub Datei_öffnen_in_bestimmter_Zelle() Dim Pfad As String, i As Long, freie As Long
With Sheets("Tabelle1") For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row If .Cells(i, "A") > 0 Then Pfad = ThisWorkbook.Worksheets("Tabelle1").Range("C" & i).Value freie = Sheets("Tabelle2").Cells(.Rows.Count, "A").End(xlUp).Row + 1 With Workbooks.Open(Filename:=Pfad)
.ActiveSheet.Range("A3:DN6000").Copy _ Destination:=ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Range("A" & freie) .Close savechanges:=False 'oder true, wenn Änderungen gespeichert werden sollen End With End If Next i End With End Sub
Sheets.Add(After:=Sheets(Sheets.Count)) habe ich eingefügt.
Das funktioniert auch soweit. Die Dateien werden in neue Tabellenblätter zugeordnet. Gibt es nun auch die Möglichkeit das die Tabellenblätter den Namen der Datei besitzen? Bis dato werden die Tabellenblätter gezählt.
Ein weiteres Problem besteht nun darin: Zum Ausführen des Codes benötigte ich bis dato immer "Tabelle2" (siehe Code unten)
freie = Sheets("Tabelle2").Cells(.Rows.Count, "A").End(xlUp).Row + 1
habe diese Reihe nun geändert in:
freie = Sheets("Tabelle1").Cells(.Rows.Count, "A").End(xlUp).Row + 1
=> Was bewirkt diese Zeile ?
Und wie immer Danke für die Hilfe.
Grüße
Registriert seit: 21.11.2018
Version(en): das neuste
Hallo, habe die ganze Nacht weitergetüfftelt, leider nicht erfolgreich.
folgendes Problem besteht weiterhin:
- die Tabellen müssen als Dateiname eingelesen werden und nicht beziffert werden mit Tabelle 1,2,3,4,5,6,7
Dann gibt es noch zwei weitere Masterfragen die das Makro können sollte ich aber leider nichts in Internet/ google.de gefunden habe:
Die erste Masterfrage:
Es werden nur die Textdateien eingelesen bei denen die Fläche größer ist als 0. Das war die Bedingung. Klappt es jetzt auch noch das wenn diese Bedingung in dieser Zeile erfüllt ist, dass die zu importierende Textfile mit der zugehörigen Fläche multipliziert wird?
Grüße
Registriert seit: 16.04.2014
Version(en): xl2016/365
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
29.11.2018, 11:19
(Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2018, 11:20 von MisterBurns.)
Und nur weil ich nicht umgehend eine Antwort gepostet habe, machst du gleich in 2 anderen Foren Beiträge auf?
Schöne Grüße Berni
Registriert seit: 21.11.2018
Version(en): das neuste
29.11.2018, 11:22
(Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2018, 11:22 von ilmiomondo.)
(29.11.2018, 10:57)steve1da schrieb: Hola,
und trotz Hinweis hast du deine mittlerweile 3 Threads nicht verlinkt....
https://ms-office-forum.net/forum/showth...p?t=356083 http://www.herber.de/forum/messages/1660194.html
Gruß, steve1da Hallo Steve1da, wie du gerade erwähnst habe ich diesen Post ebenso in das ms-office-forum und herber gepostet. Grund hierfür ist das ich zeitlich ein Problem habe und schnellst möglich eine Lösung benötige. Und da meine VBA Kenntnisse gering sind, benötige ich all eure Hilfe!
Registriert seit: 21.11.2018
Version(en): das neuste
29.11.2018, 12:24
(Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2018, 12:24 von ilmiomondo.)
Hallo Berni, ehrlich gesagt bin ich in Zeitnot. Daher habe ich probiert mich überall schlau zumachen. Tutorials, Foren , Beiträge die Nacht durchforstet und keine Antwort auf meine Problemstellung bekommen. Daher habe ich dort ebenso nachgefragt. Das hat nichts damit zu tun , dass du nicht geantwortet hast. Ich glaube es ist doch klar und verständlich das du um 22 Uhr nicht mehr antwortest. Das bitte nicht falsch verstehen. Ich wusste auch nicht das man ein Thematik nicht vervielfältigen kann solang am Ende die Lösung in jedem Threat steht? evtl falsch gedacht? Ich habe die Beiträge in den anderen Foren als erledigt vermerkt. Grüße
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Das Thema ist folgendes: Crossposting ohne gegenseitiges Verlinken ist ungern gesehen. Denn somit wissen die einzelnen Helfer nichts voneinander und mindestens einer, vermutlich aber mehrere arbeiten für die Tonne. Dass das ärgerlich ist, wirst du nachvollziehen können. Wenn du die Beiträge verlinkst und eine kurze Begründung schreibst, wieso du doppelt/dreifach postest, dann kann man das nachvollziehen und auf den Lösungen der anderen aufbauen bzw. auf diese verweisen. Und zum Thema, dass es so dringend ist... Ich habe ehrlich gesagt noch nie gehört, dass sich jemand die Nacht um die Ohren schlägt, weil er/sie so dringend eine Exceldatei braucht. Und falls es für die Arbeit und wirklich so megadringend ist, dann muss man sich halt überlegen, ob man das nicht einem Profi übergibt anstatt jemandem der das Problem aus eigener Kraft nicht lösen kann. Gut, nun zu deinen Fragen: Zitat:Die Dateien werden in neue Tabellenblätter zugeordnet. Gibt es nun auch die Möglichkeit das die Tabellenblätter den Namen der Datei besitzen? Bis dato werden die Tabellenblätter gezählt. Ja, das geht natürlich. Füge die mittlere Zeile in deinen Code ein, die benennt das Blatt um Code: Destination:=ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Range("A" & freie) Sheets(Sheets.Count).Name = Sheets("Tabelle1").Cells(i, "C") .Close savechanges:=False 'oder true, wenn Änderungen gespeichert werden sollen
Zitat:freie = Sheets("Tabelle1").Cells(.Rows.Count, "A").End(xlUp).Row + 1
=> Was bewirkt diese Zeile ? Diese Zeile besagt, dass im Blatt "Tabelle1" in Spalte "A" die letzte befüllte Zelle gesucht und als Zahl ausgegeben wird. Das + 1 am Ende ist demnach dann die erste freie Zelle in Spalte A. Diese Zahl wird dann der Variable "freie" zugewiesen. Wieso du das von Tabelle2 auf Tabelle1 geändert hast, weiß ich nicht, da ich natürlich nicht deine Originaldatei kenne. In diesem Fall soll ja die erste freie Zeile im Zielblatt ermittelt werden. Zitat:Klappt es jetzt auch noch das wenn diese Bedingung in dieser Zeile erfüllt ist, dass die zu importierende Textfile mit der zugehörigen Fläche multipliziert wird? Die Frage verstehe ich nicht. Wie soll eine Zahl (=Fläche) mit einer Textdatei multipliziert werden? Zitat:Dann gibt es noch zwei weitere Masterfragen Und wie lautet die zweite?
Schöne Grüße Berni
Registriert seit: 21.11.2018
Version(en): das neuste
29.11.2018, 15:08
(Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2018, 15:08 von ilmiomondo.)
Ich habe die untere Zeile eingefügt. Folgende Problematik besteht: Folgender Fehler tritt auf: Laufzeitfehler `9` Index außerhalb des gültigen Bereichs. Code: Destination:=ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Range("A" & freie) Sheets(Sheets.Count).Name = Sheets("Tabelle1").Cells(i, "C") .Close savechanges:=False 'oder true, wenn Änderungen gespeichert werden sollen
* Ich habe Sheets(Sheets.Count).Name = Sheets("Tabelle1").Cells(i, "B") , Spalte B wäre auch in Ordnung aber derselbe Fehler tritt auf. Eventuell kann er den Namen aus dem Pfadtext nicht herausnehmen? * Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet" , habe es mit Anführungszeichen probiert, funktioniert auch nicht. Masterfrage 1: Die Frage verstehe ich nicht. Wie soll eine Zahl (=Fläche) mit einer Textdatei multipliziert werden? In unserer Datei haben wir an 3 Stelle 20m² WC. Bedingung war: wenn > 0 dann lade die hinterlegte Textdatei "WC" mit ihren Werten als Tabellenblatt in die Exceldatei Alle diese Werte in der Tabelle "WC" sollen mit dem Wert 20 multipliziert werden. Und wie lautet die zweite? Die zweite Frage lautet: Wenn das Einlesen der Dateien die die Bedingung >0 erfüllen und die dazugehörige Multiplikation erfolgt ist , dann sollen die ersten Spalten ( Spalte Personen ) der eingelesenen Dateien addiert und in ein neues Tabellenblatt hinterlegt werden werden. Danke für deine Hilfe!!! Grüße
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Dass du nun jeweils pro Raum ein eigenes Tabellenblatt möchtest, entspricht aber nicht deiner ursprünglichen Anfrage! Ebenfalls hättest du das mit dem Multiplizieren vorab erwähnen können. Bitte keine Salamitaktik, sag klar und eindeutig, was du möchtest. Ich habe ja auch keine Lust, das Ganze 5 mal anzupacken. Code: Sub Datei_öffnen_in_bestimmter_Zelle() Dim Pfad As String, i As Long, Z As Long, S As Long Dim Zelle As Range, Bereich As Range
Application.ScreenUpdating = False With Sheets("Tabelle1") For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row If .Cells(i, "A") > 0 Then Pfad = ThisWorkbook.Worksheets("Tabelle1").Range("C" & i).Value With Workbooks.Open(Filename:=Pfad) .ActiveSheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) .Close savechanges:=False 'oder true, wenn Änderungen gespeichert werden sollen End With With ActiveSheet .Move After:=Sheets(Sheets.Count) Z = .Cells(.Rows.Count, "A").End(xlUp).Row S = .Cells(3, .Columns.Count).End(xlToLeft).Column Sheets("Tabelle1").Range("A" & i).Copy .Range(.Cells(3, "A"), .Cells(Z, S)).PasteSpecial Paste:=xlPasteAll, operation:=xlMultiply
End With End If Next i End With
Application.ScreenUpdating = False End Sub
Bitte erläutere deine zweite Masterfrage genauer.
Schöne Grüße Berni
|