Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Excel-Dateien zusammen führen (Tabellen)

Forumthread: Excel-Dateien zusammen führen (Tabellen)

Excel-Dateien zusammen führen (Tabellen)
25.09.2025 16:32:49
KSMBln
Hallo zusammen,

Ich habe jetzt mehrere Wochen im Internet und hier nach verschiedenen Lösungen gesucht.
Ich habe eine Excel in der ich nach einer Datei suche und sie öffnen lasse.

Sub Suchen_Oeffnen()


'Entnommen aus Link: https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/sendkeys-statement
'entnommen aus Link: https://www.herber.de/forum/archiv/608to612/609556_Tabellenblatt_kopieren_mit_VBA.html
'entnommen aus Link: https://administrator.de/forum/mit-vba-teile-einer-unbekannten-excel-datei-in-eine-neue-kopieren-82577.html
'Wartezeiten müssen wegen der Trägheit der Programme sein.
'***********************************************************************************
Set ZBK = ActiveWorkbook 'Arbeitsmappe auf das aktive Workbook setzen

Shell "explorer.exe", vbNormalFocus 'der Exploerer wird geöffnet
Application.Wait (Now + TimeValue("0:00:05")) 'Wartezeit

'Suche aktivieren
SendKeys "^(f)" 'Tastenkürzel senden
Application.Wait (Now + TimeValue("0:00:01")) 'Wartezeit
Tabelle_Schalthilfe.Range("Zettel").Copy 'Zelle mit einem Teil des Dateinamens (z.B. Schaltzettel_Linecard_(BNG)_49_511_2832_71E2_202)

'in Suche einfügen
SendKeys "^(v)" 'Tastenkürzel senden
Application.Wait (Now + TimeValue("0:00:01")) 'Wartezeit
SendKeys "{ENTER}"

Application.Wait (Now + TimeValue("0:00:03")) 'Wartezeit

'Aufruf der Datei
SendKeys "{DOWN}" 'Tastenkürzel senden
Application.Wait (Now + TimeValue("0:00:03")) 'Wartezeit
SendKeys "{ENTER}" 'Tastenkürzel senden

SendKeys "{NUMLOCK}" 'Nummernblock wird wieder eingeschaltet

End Sub


Dies funktioniert sehr gut :)
Der "Zettel" wird aus bestimmten Zellen (=VERKETTEN(R7;"_49_";VPSZe)) zusammen gesetzt und auch gefunden. Das, was gleich bleibt ist "Schaltzettel_Linecard_(BNG)"

Nun möchte ich aber auch die aufgerufene Datei automatisch ein paar Zellen kopieren, oder den ersten Sheet zur ersten Excel ("Schalthife") einfügen.
Der selbst erstellte Makro macht dies zwar, aber nur für die gerade geöffnete Datei.

Windows("Schaltzettel_Linecard_(BNG)_49_011_2802_71E2_902_VDSL-V,VDSL,ADSL8+_1234567891234567.xls").Activate

'Sheets("Schaltzettel_Linecard").Select
Sheets("Schaltzettel_Linecard").Copy After:=Workbooks("KSM-Umschaltliste Outdoor Original.xlsm").Sheets(1)
Application.WindowState = xlMinimized


Wenn ich Windows("Schaltzettel_Linecard_(BNG)_49_511_2832_71E2_202" & "*.xls").activate daraus mache kommt " Index außerhalb des gültigen Bereichs".
Wie kann ich den Sheet aus der Datei entnehmen wo ein Teil des Dateinamens unbekannt ist?

Besten Dank

Klaus
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Dateien zusammen führen (Tabellen)
25.09.2025 17:01:52
ralf_b
du könntest die offenen Mappen in der Workbooksauflistung per Schleife durchlaufen und mit einem Like kannst du den Namen per Mustervergleich finden.
AW: Excel-Dateien zusammen führen (Tabellen)
29.09.2025 10:58:24
KSMBln
Guten Morgen,

Sorry das meine Antwort so lange gedauert hat :(
Ich habe am Freitag Ulf seinen Vorschlag eingesetzt. Leider wird immer gesagt, das eine Kopie nicht möglich ist, da ein offerner Task dies verhindert.
Gut ich muß natürlich für die Suche einer Datei einen Explorer-Task öffnen und dort nach der Datei suchen (Unbekannter Speicherplatz) Laut Internet kann man einen Task aufrufen (mit Shell "explorer.exe", vbNormalFocus) aber nicht wieder schließen (z.B. Shell "explorer.exe", vbHide).
Dieses problem wollte ih dann mit "Call Shell("TaskKill /F /im explorer.exe" & CStr(im), vbHide)" Lösen. Sollte keiner machen!!!!! Den dadurch wird Der Explorer mit Taskbar und allem beendet, was dazufüht, daß man nichts mehr machen kann, da hilft nur ein zwangsabschalten und neu starten.

Aus meiner Sicht: Wenn ich einen Task aufrufe, sollte man ihn doch wieder schließen können.
Wenn ich dieses Problem nicht hin bekomme kann ich Ulf seinen Vorschlag nicht testen :((

Klaus
Anzeige
AW: Excel-Dateien zusammen führen (Tabellen)
29.09.2025 11:35:00
KSMBln
Ich habe sogar etwas im Archiv gefunden (https://www.herber.de/forum/archiv/1068to1072/1069610_Fremdes_Programm_beenden.html) Leider nur mit Kernel32. Da ich aber nur 64-Office habe meckert VBA rum ;( Ein Kernel64 (eventuell kernelbase) gibt es wohl laut suche im Rechner nicht.
ist es möglich das gefundene auf 64-Office anzupassen?
Anzeige
AW: Excel-Dateien zusammen führen (Tabellen)
25.09.2025 17:35:14
Ulf
Hi,
da die Anzahl der offenen Dateien um eins steigt



public strSheet as string

Sub Suchen_Oeffnen()

Dim lngSheets as long

'Entnommen aus Link: https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/sendkeys-statement

'entnommen aus Link: https://www.herber.de/forum/archiv/608to612/609556_Tabellenblatt_kopieren_mit_VBA.html

'entnommen aus Link: https://administrator.de/forum/mit-vba-teile-einer-unbekannten-excel-datei-in-eine-neue-kopieren-82577.html

'Wartezeiten müssen wegen der Trägheit der Programme sein.

'***********************************************************************************

Set ZBK = ActiveWorkbook 'Arbeitsmappe auf das aktive Workbook setzen



Shell "explorer.exe", vbNormalFocus 'der Exploerer wird geöffnet

Application.Wait (Now + TimeValue("0:00:05")) 'Wartezeit



'Suche aktivieren

SendKeys "^(f)" 'Tastenkürzel senden

Application.Wait (Now + TimeValue("0:00:01")) 'Wartezeit

Tabelle_Schalthilfe.Range("Zettel").Copy 'Zelle mit einem Teil des Dateinamens (z.B. Schaltzettel_Linecard_(BNG)_49_511_2832_71E2_202)



'in Suche einfügen

SendKeys "^(v)" 'Tastenkürzel senden

Application.Wait (Now + TimeValue("0:00:01")) 'Wartezeit

SendKeys "{ENTER}"



Application.Wait (Now + TimeValue("0:00:03")) 'Wartezeit



'Aufruf der Datei

SendKeys "{DOWN}" 'Tastenkürzel senden

Application.Wait (Now + TimeValue("0:00:03")) 'Wartezeit

'Anzahl der offenen Dateien vor Aufuf
lngsheets=Application.Sheets.Count

SendKeys "{ENTER}" 'Tastenkürzel senden

strSheet=Application.Sheets(lngsheets+1).Name

SendKeys "{NUMLOCK}" 'Nummernblock wird wieder eingeschaltet



End Sub


dann

'Windows("Schaltzettel_Linecard_(BNG)_49_011_2802_71E2_902_VDSL-V,VDSL,ADSL8+_1234567891234567.xls").Activate

Windows(strSheet).Activate
'Sheets("Schaltzettel_Linecard").Select

Sheets("Schaltzettel_Linecard").Copy After:=Workbooks("KSM-Umschaltliste Outdoor Original.xlsm").Sheets(1)

Application.WindowState = xlMinimized

hth
Ulf
Anzeige

Forumthreads zu verwandten Themen