3.7k Aufrufe
Gefragt in Tabellenkalkulation von
Guten Morgen liebe Supportnetler,

ich habe da eine mühsame Arbeit und denke, dass man das per Makro vereinfachen kann. Nur leider fehlt mir hier das Wissen. :-(

Mir liegen 68 Excel-Dateien vor, die jeweils zwei Arbeitsmappen haben. Diese lauten (immer gleich!!!): EVN Details und Erklärungen zu Verbindungsarten. Nun brauche ich in einer Datei alle Arbeitsmappen "EVN Details". Damit die Übersicht gewährt bleibt, hätte ich gerne als neuen Mappen-Namen noch die letzten 8 Stellen des Dateinamens. Zum Beispiel lautet eine Datei "EVN_06563949012721_KARTE_50010560.xls". Die darin befindliche Mappe "EVN Details" sollte dann in der neuen Datei als "EVN Details 50010560" eingefügt werden.

Geht das überhaupt? Oder muss ich mich jetzt wirklich hinsetzen, die einzelnen Mappen in eine neue Datei kopieren und manuell umbenennen? Hoffe nicht!!!!

Für einen hilfreichen Tipp wäre ich euch echt dankbar!

Herzliche Grüße
Mona1980

PS: Hoffe es ist verständlich genug formuliert...

10 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
Hier hätte ich mal einen Code die Dateinamen in Access einzulesen www.supportnet.de/t/2234766, kannste umschreiben und in Excel einlesen.
Danach hintereinander alle aufrufen, die letzten 8 Zeichen vom Namen merken, zwei neue Tabellenblätter anlegen umbenennen in EVN Details und Erklärungen zu Verbindungsarten & die letzten 8 gemerkten Zeichen, Tabellenblatt kopieren, einfügen. Kein Problem, aber wenn Du gar keine Ahnung hast und das nur ein einziges Mal machen musst, hast Du vermutlich alle 68 Dateien schneller kopiert als den Code zum laufen gebracht.

gruß marie
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi mona .-)

teste mal

gruss nighty

Global Scup As Boolean
Global Ebes As Boolean
Global Cclt As Integer
Option Explicit
Sub DateienLesen()
Scup = Application.ScreenUpdating
Ebes = Application.EnableEvents
Cclt = Application.Calculation
Call EventsOff
Dim DateiName As String
DateiName = Dir("C:\Temp1\" & "*.xls")
Do While DateiName <> ""
If ThisWorkbook.Name <> DateiName And Len(DateiName) > 11 Then
Workbooks.Open Filename:="C:\Temp1\" & DateiName
Workbooks(DateiName).Worksheets("Tabelle1").Copy Before:=Workbooks(ThisWorkbook.Name).Worksheets(1)
ActiveSheet.Name = Mid(Right(DateiName, 12), 1, 8)
Workbooks(DateiName).Close
End If
DateiName = Dir
Loop
Call EventsOn
End Sub

Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub

Public Sub EventsOn()
With Application
.ScreenUpdating = Scup
.EnableEvents = Ebes
.Calculation = Cclt
End With
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi mona :-)

gruss nighty

an EINER stelle anzupassen
"Tabelle1"

an ZWEI stellen anzupassen
"C:\Temp1\"
0 Punkte
Beantwortet von
Hey Nighty!

Herzlichen Dank für dein Makro. Denke, dass ich es richtig angepasst habe....

"Tabelle1" habe ich durch den Namen der Arbeitsmappe ersetzt

"C:\Temp1\" habe ich durch den Pfad ersetzt, wo die einzelnen Dateien zu finden sind

Wenn ich das Makro starten möchte, zeigt er mir drei zur Auswahl: DateienLesen, EventsOff und EventsOn. Leider passiert hier jedoch nichts. :-(

Hab ich einen Denkfehler beim Ersetzen??

Herzlichste Grüße und nochmals VIELEN DANK!

Mona1980
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi mona :-)

"Tabelle1" waere deine zu kopierende tabelle

"Tabelle1" wird also geaendert zu "EVN Details"

wenn ich richtig verstanden hab :-)

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

@marie
api funtionen bei unterordnern einsetzen,ansonsten reicht die dir function

die events,naja,kein muss,mir gefaellts immer gut,koennte aber auch raus mit einigen bremseffekten :-)))

gruss nighty
0 Punkte
Beantwortet von
Hallo Nighty,

muss ich die Ausführung der Makros in einer bestimmten Reihenfolge vornehmen? Und wie ist es mit Leerzeichen im Namen von dem Tabellenblatt? Muss "EVN Details" als "EVN_Details" angegeben werden? Und, zum guten Schluss, muss ich eine der besagten Dateien offen haben oder geht auch eine noch nicht gespeicherte neue Datei?

Grüßle aus dem Hesse-Land
Mona1980
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi mona

zu 1
es wird nur das makro DateienLesen gestartet

zu 2
leerzeichen sollten keine rolle spielen,da die dateinamen automatisch eingelesen werden

zu 3
ein tabellennamen sollte schon angegeben sein,sonst wuessten wir ja nicht welche tabelle

wenn das dein angegebener name ist,dann diesen "EVN Details" wie oben erwaehnt einfuegen

zu 4
die dateien werden automatisch geoeffnet ausgelesen und wieder geschlossen

verbundene zellen sind verboten

geschuetzte bereiche ist der schutz kurzfristig aufzuheben

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

verbundene zellen duerften keine rolle spielen da ja ganze tabellen kopiert werden :-)))

gruss nighty
0 Punkte
Beantwortet von
Hallo Nighty,

ES KLAPPT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Ich musste lediglich die Daten auf C verschieben, aber das ist ja nicht so schlimm! Jetzt kann ich meine Auswertungen machen!

Von Herzen ein dickes fettes Dankeschön.

GLG
Mona1980
...