Anzeige
Archiv - Navigation
1768to1772
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro nur auf bestimmte Files anwenden

Makro nur auf bestimmte Files anwenden
06.07.2020 13:22:00
Hannah
Guten Tag,
Ich möchte gerne aus einem Ordner bestimmte Dateien öffnen, das Worksheet "2" löschen und das speichern.
Leider funktioniert mein Makro dafür überhaupt nicht. Könntet ihr mir hier weiterhelfen?
Im Ordner sind viele Datein mit 1.xlsx, 2.xlsx, 3.xlsx etc.
zB sollen 29501.xlsx und 29512.xlsx bearbeitet werden.
Wie wende ich das Makro an bzw. wie bearbeite ich mein Makro am besten?
Soweit bin ich schon gekommen:

Sub Makro_blaetter_loeschen()
' Makro_blaetter_loeschen Makro
' Tastenkombination: Strg+Umschalt+M
Dim MyFile As String
Dim Filepath As String
Dim q As Long
Filepath = Application.ThisWorkbook.Path & "\"
Debug.Print Filepath
Filepath = "C:\Users\EE1902\Desktop\MAKRO\"
Ext = "29501.xlsx"
Debug.Print Ext
If Filepath = "" Then
Exit Sub
Else
MyFile = Dir(Filepath)
Debug.Print MyFile
Do While Len(MyFile) > 0
Workbooks.Open Filename:=Filepath & MyFile
'alle Blätter mit Namen "Stat.Kennzahlen" löschen
Sheets("Stat. Kennzahlen").Activate
Sheets("Stat. Kennzahlen").Select
ActiveWindow.SelectedSheets.Delete
ActiveWorkbook.Save
ActiveWorkbook.Close
'MyFile = Dir()
Loop
End If
End Sub

Vielen vielen dank schon im Voraus für die Antworten!
Liebe Grüße
Hannah

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 13:43:24
ChrisL
Hi
Sub Makro1()
Dim ar As Variant, i As Integer
Const strPfad As String = "C:\Users\EE1902\Desktop\MAKRO\"
ar = Array("29501.xlsx", "29512.xlsx")
Application.ScreenUpdating = False
For i = LBound(ar) To UBound(ar)
Call DeleteWS(strPfad & ar(i))
Next i
End Sub

Private Sub DeleteWS(strFile As String)
Dim WB As Workbook
On Error Resume Next
Set WB = Workbooks.Open(strFile)
Application.DisplayAlerts = False
WB.Worksheets("Stat.Kennzahlen").Delete
WB.Close True
Application.DisplayAlerts = True
End Sub

Fehler (u.a. Mappe oder Blatt nicht vorhanden) werden übersprungen.
cu
Chris
Anzeige
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 15:02:26
Hannah
Hallo Chris,
Vielen lieben Dank erstmals für deine schnelle Antwort!
Leider öffnet mir das Makro nun bei Ausführung 29501.xlsx ohne das Tabellenblatt zu löschen?
Kannst du dir das erklären?
Vielen Dank im Voraus!
Liebe Grüße
Hannah
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 15:16:49
ChrisL
Hi
Weil die Fehler übersprungen werden, siehst du das Problem nicht. Darum folgende Zeile kurzzeitig entfernen:
On Error Resume Next
Vielleicht ist die Mappe geschützt oder der Blattname stimmt nicht.
cu
Chris
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 15:47:02
Hannah
Hallo Chris,
Wenn
On Error Resume Next
entfernt wird, ändert sich nichts (?)
Was ich allerdings schon herausgefunden habe: egal welchen Datei-Namen ich als erstes ins Makro einfüge - diese Datei wird mir dann geöffnet.
Auch ist keinerlei Schutz auf der Mappe.
Liebe Grüße
Hannah
Anzeige
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 16:30:24
ChrisL
Hi
Entferne auch mal noch temporär folgende Zeile:
Application.DisplayAlerts = False
Gibt es eine Fehlermeldung?
cu
Chris
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 16:37:24
Daniel
Hi
so vielleicht, wenn du nur bestimmte bekannt Dateien bearbeiten willst.
dim Datei
dim Dateien
dim Pfad as string
dim wB as workbook
dim wS as worksheet
Pfad = "C:\Users\EE1902\Desktop\MAKRO\"
Dateien = Array("29501.xlsx","29512.xlsx")
for each Datei in Dateien
if Dir(Pfad & Datei)  "" then
set wB = Workbooks.Open(Pfad & Datei)
for each wS in wB.Worksheets
if wS.Name = "Stat.Kennzahlen" then
Application.DisplayAlerts = False
If wB.Worksheets.Count > 1 then wS.Delete
Application.DisplayAlerts = True
Exit for
end if
next
end if
Next
Gruß Daniel
Anzeige
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 16:50:18
Hannah
Lieber Daniel, lieber Chris,
Eure Makros bringen bei mir leider denselben Fehler(?). Beide Male öffnet sich mit das erste Excel-File, jedoch werden keine Änderungen vorgenommen?
Es kommt auch keine Fehlermeldung etc.
Irgendwelche anderen Ideen?
Vielen Dank und alles Liebe
Hannah
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 16:53:37
Daniel
aua, Fehler
das fehlt noch das SAVE und CLOSE. hatte ich ganz vergessen.
for each Datei in Dateien
if Dir(Pfad & Datei)  "" then
set wB = Workbooks.Open(Pfad & Datei)
for each wS in wB.Worksheets
if wS.Name = "Stat.Kennzahlen" then
Application.DisplayAlerts = False
If wB.Worksheets.Count > 1 then wS.Delete
Application.DisplayAlerts = True
wB.Save
Exit for
end if
next
wB.Close false
end if
Next

Anzeige
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 17:31:38
Hannah
Lieber Chris, lieber Daniel,
Juhu, ihr seid meine Helden & es funktioniert schon zu 95%!
Einziges Problem jetzt noch: In die Klammer zu Array gehören ca. 100-200 Dokumentnamen & VBA hüpft mir nicht in die nächste Zeile sondern schneidet ab. Gibt es hier eine Möglichkeit zu zB in zwei Zeilen Dokumentnamen zu schreiben?
Ansonsten JUHUUU und vielen Dank!!!
Dateien = Array("29501.xlsx", "29507.xlsx")
AW: Makro nur auf bestimmte Files anwenden
06.07.2020 17:43:02
Daniel
Hi
Schreibe die Dateinamen in ein Tabellenblatt in der Datei mit dem Makro.
Die Dateinamen können unter- oder nebeneinander stehen oder such eine Matrix bilden (in mehreren Spalten unter und nebeneinander.
Ersetze dann die Zeile mit dem Array durch
For each Datei In ThisWorkbook.Sheets("Dateien").Range("A1"). CurrentRegion.Value
Gruß Daniel
Anzeige
AW: Makro nur auf bestimmte Files anwenden
08.07.2020 10:34:17
Hannah
Lieber Daniel,
Dankesehr!
Ganz liebe Grüße und noch einen schönen Tag!
Hannah

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige