10.07.2019, 19:47 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2019, 19:49 von Flotter Feger.)
Hallo David,
theoretisch wäre das deine Code um die Daten zu kopieren.
Allerdings ... und das ist ein Problem, weiß ich nicht, wie Excel erkennen kann, welche der Dateien nun Datei1 und welche Datei4 ist.
Erzähle mal was dazu ...
Code:
Option Explicit
Sub Komplett()
Dim i As Byte
Dim Datei(1 To 4)
Dim UE As Worksheet
Dim Pfad As String
Const Pfad = "C:\1\" ' <-- anpassen
Set UE = ThisWorkbook.Worksheets("Übersicht")
'*** Problem: wie erkennt Excel welche
'*** Datei welche der Dateien sein soll
Datei(1) = Datei1 ' ??
Datei(2) = Datei2 ' ??
Datei(3) = Datei3 ' ??
Datei(4) = Datei4 ' ??
For i = 1 To 4
Workbooks.Open Datei(1)
With Datei(i)
With Worksheets(1)
.Range("C4:C13").Copy UE.Range("B2").Offset(0, i - 1)
.Range("C22:C39").Copy UE.Range("B14").Offset(0, i - 1)
.Range("D22:D39").Copy UE.Range("B35").Offset(0, i - 1)
.Range("E22:E39").Copy UE.Range("B56").Offset(0, i - 1)
.Range("C46:C67").Copy UE.Range("B77").Offset(0, i - 1)
.Range("E46:E67").Copy UE.Range("B102").Offset(0, i - 1)
End With
With Worksheets(2)
.Range("B2:B77").Copy UE.Range("I2").Offset(0, i - 1)
.Range("C2:C77").Copy UE.Range("O2").Offset(0, i - 1)
End With
End With
Workbooks(Datei(1)).Close Savechanges:=False
Next i
End Sub
Das Problem an den 4 Dateien ist, dass die immer unterschiedlich benannt sind. Und zwar werden die einzelnen Dateien immer mit dem jeweiligen Datum benannt.
Weißt du, ob es eine Möglichkeit gibt, dass quasi immer festgelegt ist das Datei 1 die erste Datei kopiert wird die im Ordner ist, egal wie die benannt wird? Datei 2 ist dann immer die zweite usw? Verstehst du wie ich das meine?
das Problem ist, dass es aktuell noch gar nicht genau klar ist bezüglich dem Ordner.
Ich gehe allerdings davon aus, dass es immer einen festen Ordner geben wird, in welchem sich alles abspielt.
Deine Frage mit:" warum soll Excel nicht fragen, welche Datei kopiert werden soll" verstehe ich nicht ganz.
Meinst du damit, dass ein Fester aufpoppen soll, in welchem man die entsprechende Datei auswählt?
Hänge dir mal einen Screenshot davon an, was ich genau meine.
So eine Lösung habe ich schon, allerdings kam dann der Wunsch danach, dass man quasi den Ordner auslesen soll nach welchen
Dateien in dem Ordner sind und man diese dann auf eine Variable in VBA programmiert und es diese Dateien kopiert.
Vielleicht kannst du mir deinen Vorschlag mal mit einem Screenshot bzw. Datei näher erläutern.
theoretisch wäre das deine Code um die Daten zu kopieren.
Allerdings ... und das ist ein Problem, weiß ich nicht, wie Excel erkennen kann, welche der Dateien nun Datei1 und welche Datei4 ist
Hallo Sabina,
nochmals danke für den Code!
Habe die Datei 1-4 nun mal fix im Code festgelegt und kleine Abänderungen bezüglich den Pfaden usw vorgenommen und versucht und er funktioniert soweit ganz gut, bis auf kleine Fehler hinsichtlich den Daten wo diese hinkopiert werden.
Habe nun noch eine Frage:
Aktuell werden noch die kompletten Zellen, sprich mit Formel kopiert, was allerdings nicht möglich ist.
Was muss ich abändern, damit "nur" die einzelnen Werte aus der Zelle kopiert werden?
Zitat:So eine Lösung habe ich schon, allerdings kam dann der Wunsch danach, dass man quasi den Ordner auslesen soll ...
Bevor ich hier weitermache, solltest du erst abklären, was jetzt werden soll.
Das mit ... einfach mal 4 Dateien in einen Ordner ziehen und Excel sucht sich dann selbst was aus ... kannst du von meiner Seite vergessen.
Ist machbar, aber viel zu kompliziert ... viel zu fehleranfällig. Kriegst du von mir nicht.
Ich bin eher für einfache, strukturierte Sachen zu haben, mit denen jeder klarkommt, weil es Basics verwendet, die Excel ohne langes Herumtun schon kann ... zumindest dann, wenn ich nicht dafür bezahlt werde.
PS: mein Code hat genau die Daten umgestellt, wie es in der Musterdatei gezeigt war, sollte da etwas nicht gepasst haben, sorry.
bis .Copy bleibt es gleich, nur die Values einzufügen ... müssten die Zeilen so geändert werden ...
If i < 3 Then
ChDir Ordner1
Else
ChDir Ordner2
End If
Datei = Application.GetOpenFilename("Excel Dateien (*.xls*), *.xls*")
If Datei <> False Then
Set WB = Workbooks.Open(Datei)
Else
GoTo Fehler
End If
With WB
With Worksheets(1)
.Range("C4:C13").Copy: UE.Range("B2").Offset(0, i - 1).PasteSpecial xlPasteValues
.Range("C22:C39").Copy: UE.Range("B14").Offset(0, i - 1).PasteSpecial xlPasteValues
.Range("D22:D39").Copy: UE.Range("B35").Offset(0, i - 1).PasteSpecial xlPasteValues
.Range("E22:E39").Copy: UE.Range("B56").Offset(0, i - 1).PasteSpecial xlPasteValues
.Range("C46:C67").Copy: UE.Range("B77").Offset(0, i - 1).PasteSpecial xlPasteValues
.Range("E46:E67").Copy: UE.Range("B102").Offset(0, i - 1).PasteSpecial xlPasteValues
End With
With Worksheets(2)
.Range("B2:B77").Copy: UE.Range("I2").Offset(0, i - 1).PasteSpecial xlPasteValues
.Range("C2:C77").Copy: UE.Range("O2").Offset(0, i - 1).PasteSpecial xlPasteValues
End With
End With
WB.Close Savechanges:=False
Next i
Exit Sub
Fehler:
MsgBox "User hat Abbrechen gedrückt."
End Sub
12.07.2019, 22:45 (Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2019, 23:07 von wertistwert.)
Hallo Sabina,
danke! Die erste Spalte funktioniert bis auf kleine Anpassungen bezüglich den Ranges aber das ist perfekt.
Nun habe ich allerdings noch zwei Fragen:
1. Ich muss die Datei aus dem Ordner "Vorkalkulation" auswählen. Kann man hier was machen, dass automatisch immer die Datei genommen wird, welche sich darin befindent?
Das ich quasi immer nur die gültige Datei in den Ordner kopiere und es damit immer nur eine Datei gibt?
2. Ich bekomme die Fehlermeldung "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler" sobald der Code die Stelle erreicht:
With Worksheets(2)
.Range ("C2:C77").Copy: UE.Range("O2)
.Offset(0, i - 1)PasteSpecial xlPasteValues
Diese Fehlermeldung erhalte ich allerdings erst, wenn ich alles per Einzelschritt debugge. Wenn ich "nur" auf meine Schaltfläche klicke, kommt nur eine Fehlermeldung "400"
Kannst du damit was anfangen?
Weiß nicht woran das liegen kann.
wenn du die Zeilen in deinem Code nicht in einer Zeile stehen hast, verwendest du nicht meinen neuen Code ... oder es hat sich ein Fehler beim Kopieren eingeschlichen. Einfach mal den neuen Code nochmal anschauen.
Zu deinen Dateien im Ordner ... mein Code ist so angelegt, dass du einfach die Dateien auf dem Ursprungs-Laufwerk auswählst.
Da muss nichts in einen anderen Ordner kopiert werden ... Excel öffnet einfach die Datei im Ursprungsordner, liest sie aus und schließt sie wieder. Natürlich, ohne sie zu ändern.
Kein Kopieren ... einfach nur auswählen ... auslesen ... und gut. Nur so kann man genau sicherstellen, welche Datei geöffnet wird.
Wie bereits gesagt ... irgendwelche Dateien, die in irgendeinen Ordner kopiert werden und die dann Excel selbstständig erkennen und verarbeiten soll ... obwohl niemand vorher deren Namen kennt ... viel zu Fehleranfällig ... das macht keinen Sinn und deshalb kriegst du es von mir auch nicht ... und falls du es noch einmal, wenn auch nur durch die Blume, von mir verlangst, bin ich weg ... ich habe dir schließlich eine funktionierende Variante angeboten.
und das bei ChDrive habe ich auf "C:\Users\David\Documents\Test" angepasst.
Und dann habe ich noch die worksheetsbezeichnung geändert. Man muss nämlich zuerst von Worksheet 2 die Daten kopieren und dann von Worksheet 1.
Sprich ich habe nur die Zahlen in der Klammer ausgetauscht.
Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Hinweis auf Angebot
Excel-Inside - lang Keine
Lösung gefunden? Du kannst Dich gerne an
unser erfahrenes Experten-Team
wenden um dein Anliegen zu besprechen. Gerne
erstellen wir auf dieser Basis ein Angebot. Sende deine Anfrage
einfach per
E-Mail an anfrage@excel-inside.de