Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1872to1876
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

Dateien öffnen und Sheet umbennen

Dateien öffnen und Sheet umbennen
02.03.2022 11:14:11
Thomas
Hallo,
beim öffnen einer Arbeitsmappe werden alle Dateien eines Unterverzeichnisses nacheinander geöffnet und umbenannt. Das funktioniert auch grundsätzlich ohne Probleme,allerdings sind aktuell auch nur 5 Dateien in dem Unterordner und es kommt wöchentlich eine Dazu, so das das schon ein bisschen stört, weil nacheinander die Mappe geöffnet, Tabellenblatt umbenannt, gespeichert und geschlossen wird und dabei jede Arbeitsmappe natürlich mal zumindest kurz aufploppt. Kann man das irgendwie im Hintergrund erledigen lassen das das nicht so stört?
Das andere wäre, wenn ein Tabellenblatt in einer Arbeitsmappe (jede Mappe hat nur ein Blatt) einmal umbenannt wurde, dann müsste diese eigentlich beim nächsten mal nicht wieder geöffnet und umbenannt werden,wie könnte ich das lösen, so das nur die neuen Arbeitsmappen geprüft und geändert werden?
Aktuell sieht die Prozedur so aus:

Private Sub Workbook_Open()
Dim strVerzeichnis As String
Dim Dateiname As String
strVerzeichnis = ThisWorkbook.Path & "\Import\"
Dateiname = Dir(strVerzeichnis & "*.xlsx")
Do While Dateiname  ""
Workbooks.Open Filename:=strVerzeichnis & Dateiname
ActiveWorkbook.ActiveSheet.Name = "Offen"
ActiveWorkbook.Save
ActiveWorkbook.Close True
Dateiname = Dir
Loop
End Sub
Danke

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien umbenennen
02.03.2022 11:36:16
UweD
@ Boris
Er will doch nicht die Datei, sondern ein Blatt in der Datei umbenennen.
Oder?
LG UweD
Stimmt - falsch gelesen...oT
02.03.2022 11:52:39
{Boris}
VG, Boris
AW: Dateien öffnen und Sheet umbennen
02.03.2022 11:34:22
UweD
Hallo
vorher die Bildschirmaktualisierung und Berechnung ausstellen

Private Sub Workbook_Open()
Dim strVerzeichnis As String
Dim Dateiname As String
Const APPNAME = "Workbook_Open"
On Error GoTo Fehler
strVerzeichnis = ThisWorkbook.Path & "\Import\"
Dateiname = Dir(strVerzeichnis & "*.xlsx")
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
Do While Dateiname  ""
Workbooks.Open Filename:=strVerzeichnis & Dateiname
ActiveWorkbook.ActiveSheet.Name = "Offen"
'ActiveWorkbook.Save   'kann weg, weil das True der nächsten Zeile nochmal speichert
ActiveWorkbook.Close True
Dateiname = Dir
Loop
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
'*** Rücksetzen
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
LG UweD
Anzeige
AW: Dateien öffnen und Sheet umbennen
02.03.2022 11:41:49
Daniel
Hi
das "aufploppen" der Dateien kannst du mit Application.ScreenUpdating = False verhindern. Nach diesem Befehl friert der Bildschirm ein und die Makroaktionen werden nicht mehr angezeigt. Nach Ende des Makros oder bei einem Stop (Fehler) wird dieser Modus automatisch ausgeschaltet.
das zweite Problem mit dem unnötigen Öffnen löst du am zuverlässigsten, wenn du die überarbeiteten Dateien umbenennst (z.B. ein "_" voranstellen) und das dann prüfst:

Private Sub Workbook_Open()
Dim strVerzeichnis As String
Dim Dateiname As String
strVerzeichnis = ThisWorkbook.Path & "\Import\"
Dateiname = Dir(strVerzeichnis & "*.xlsx")
Do While Dateiname  ""
if Not Dateiname Like "_*" then
Workbooks.Open Filename:=strVerzeichnis & Dateiname
ActiveWorkbook.ActiveSheet.Name = "Offen"
ActiveWorkbook.Save
ActiveWorkbook.Close True
Name strVerzeichnis & Dateiname AS strVerzeichnis & "_" & Dateiname
end if
Dateiname = Dir
Loop
End Sub
Wenn umbenennen keine Option ist, könntest du das Speicherdatum der Dateien überprüfen und nur das überarbeiten, was neuer ist als der letzte Makrolauf. Dazu musst du Datum und Zeit des Makrolauf sin einer Zelle hinterlegen und diesen mit dem Speicherdatum der Datei vergleichen. Das Speicherdatum der Datei bekommst du mit FILEDATETIME(Pfad&Datei)
Wenn mit den Dateien jedoch gearbeitet wird und diese nicht nur gelesen sondern auch geändert und gespeichert werden, funktioniert es natürlich so nicht.

Private Sub Workbook_Open()
Dim strVerzeichnis As String
Dim Dateiname As String
strVerzeichnis = ThisWorkbook.Path & "\Import\"
Dateiname = Dir(strVerzeichnis & "*.xlsx")
Do While Dateiname  ""
if FileDateTime(strVerzeichnis & Dateiname) > ThisWorkbook.Sheets("Tabelle1").Range("A1").Value
Workbooks.Open Filename:=strVerzeichnis & Dateiname
ActiveWorkbook.ActiveSheet.Name = "Offen"
ActiveWorkbook.Save
ActiveWorkbook.Close True
end if
Dateiname = Dir
Loop
ThisWorkbook.Sheets("Tabelle1").Range("A1").Value = Now
End Sub
Gruß Daniel
Anzeige
AW: Dateien öffnen und Sheet umbennen
02.03.2022 12:09:48
Thomas
Hallo zusammen,
vielen Dank für die schnellen Rückmeldungen.
@Daniel, das mit dem Umbenennen passt und funktioniert sehr gut. Das mit dem Application.ScreenUpdating = False nur bedingt, weil natürlich das öffnen und speichern und schließen der jeweiligen Arbeitsmappe angezeigt wird, ich konnte es noch etwas "lindern" durch ein Application.visible=False .
Aber das ist auch nicht so tragisch, da es eigentlich nur auffällt wenn immer alle Dateien im Ordner durchlaufen wurden, da das jetzt durchs umbennenen nicht mehr so ist, passt das so.
Vielen Dank für die Hilfe

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige