VBA CODE für die Auswertung
#11
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
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • ilmiomondo
Top
#12
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
Top
#13
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
Top
#14
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
Top
#15
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
Top
#16
(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!
Top
#17
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
Top
#18
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
Top
#19
Wink 
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
Top
#20
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
[-] Folgende(r) 1 Nutzer sagt Danke an MisterBurns für diesen Beitrag:
  • ilmiomondo
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste