Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zelle in mehreren Dateien ändern
#1
Sad 
Hallo!

Da mir bei meinem letzten Problem hier super geholfen wurde, versuche ich mein Glück erneut.

Eigentlich habe ich sogar zwei Probleme.

Problem 1: 

Ich habe knapp 400 Dateien in denen ich aufgrund des Schaltjahres das Datum ändern muss. Vom 28.02. auf den 29.02.2024.

Ich habe bereits diese Methode ausprobiert (damit hatte ich erstmal nur das Jahr geändert und das hat auch tadellos funktioniert, aber das Datum ersetzt er einfach nicht Huh ):

Sub ersetzen()
dateien = Application.GetOpenFilename _
("Excel-Dateien (*.xls), *.xls", MultiSelect:=True)
Application.ScreenUpdating = False
If IsArray(dateien) Then
For i = 1 To UBound(dateien)
Workbooks.Open dateien(i)
With ActiveWorkbook
For n = 1 To .Sheets.Count
.Sheets(n).Cells.Replace What:="28.02.2024", _
Replacement:="29.02.2024", _
LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Next
.Save
.Close
End With
Next
End If
End Sub


Problem 2:

In diesen 400 Dateien befindet sich eine bestimmte Zelle, die ich auf 0 setzen will. Im Moment stehen dort verschiedene Zahlen (Bestände) drin. Ich will mir quasi Blanko-Dateien für die kommenden Jahre erstellen und daher sollen diese auf 0 stehen.

Die aktuellen Bestände werde ich wohl oder übel weiterhin händisch eintragen müssen.

Falls also jemand eine Lösung für eines meiner Probleme hat, wäre ich wirklich dankbar.

Grüße

Tanja
Antworten Top
#2
moin

in deinem Code suchst du nach dem Text 28.02.2024
dann wird das Datum nicht gefunden

das könnte so gehen

Code:
Sub ersetzen()

    Dim altesDatum As Date
    Dim neuesDatum As Date
    altesDatum = "28.02.2024"
    neuesDatum = "29.02.2024"
   
    dateien = Application.GetOpenFilename _
    ("Excel-Dateien (*.xls), *.xls", MultiSelect:=True)
    Application.ScreenUpdating = False
    If IsArray(dateien) Then
        For i = 1 To UBound(dateien)
            Workbooks.Open dateien(i)
            With ActiveWorkbook
                For n = 1 To .Sheets.Count
                    .Sheets(n).Cells.Replace What:=altesDatum, _
                    Replacement:=neuesDatum, _
                    LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, _
                    SearchFormat:=False, ReplaceFormat:=False
                Next
                .Save
                .Close
            End With
        Next
    End If
End Sub

solltest du den 28.02.2024 durch eine Formel erstellt haben, wirst du damit aber auch keinen Erfolg haben

mfg Tom
Antworten Top
#3
Thumbs Up 
Vielen Dank! Das hat schon einmal super funktioniert. 23 

Habs mir auch gleich abgespeichert, damit ich im nächsten Jahr nicht wieder so hier hänge.
Antworten Top
#4
Hallo Tanja,

mal abgesehen von dem 400 Dateien, machst du sicher irgend etwas falsch am Aufbau, wenn du im Nachgang die Schaltjahre vom Datum her einpflegen musst.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
Ich habe diese Dateien nie erstellt. Die gab es schon als ich hier in die Firma kam. Ich habe diese nur übernommen und arbeite seit knapp 5 Jahren damit.

Ich bin aber gern offen für Änderungsvorschläge.

Zur Erklärung:

Es handelt sich dabei um ein Artikelkonto. Auf diesem werden alle Bewegungen monatlich entsprechend erfasst und gespeichert.


Angehängte Dateien
.xls   Vorlage_5-L-Konten_2023.xls (Größe: 43 KB / Downloads: 5)
Antworten Top
#6
Hallöchen,

In B30 hast Du eventuell das Jahr stehen - "Jahr" in A30 lässt mich das vermuten. Wenn in Spalte A die Monatsenden fest stehen, bringt das aber auch nix und Du musst alle Monatsenden ändern.

Ansonsten, speichere die Datei als xlsx und verwende überall die Funktion Monatsende, z.B. in A7

=MONATSENDE(DATUM($B$30;(ZEILE()-5)/2;1);0)

und dann kopieren und die anderen "Monatszellen" einfügen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
(22.01.2024, 22:27)schauan schrieb: Hallöchen,

In B30 hast Du eventuell das Jahr stehen - "Jahr" in A30 lässt mich das vermuten. Wenn in Spalte A die Monatsenden fest stehen, bringt das aber auch nix und Du musst alle Monatsenden ändern.

Ansonsten, speichere die Datei als xlsx und verwende überall die Funktion Monatsende, z.B. in A7

=MONATSENDE(DATUM($B$30;(ZEILE()-5)/2;1);0)

und dann kopieren und die anderen "Monatszellen" einfügen.

Vielen Dank! Das werde ich im Anschluss ausprobieren.

Ich hoffe nun das mir noch jemand bei meinem zweiten Problem helfen kann.
Antworten Top
#8
moin

du möchtest also in deinen 400 Exceldateien jeweils eine Zelle, in allen die gleiche?, auf 0 setzen
geht im Prinzip gleich wie dein Code aus dem ersten Problem
nur dass du halt nüscht mit ersetzen machst sondern die entsprechende Zelle mit

With ActiveWorkbook
    .Sheets("nur du weißt wie das Blatt heißt").Range("A175").Value = 0
End With


als Schleife geht das natürlich nur wenn die Tabellenblätter alle gleich heißen und auch die Zelle immer die gleiche ist
ansonsten kannst du auch gleich jede Datei öffnen und den Wert der Zelle von Hand nullen


mfg Tom
Antworten Top
#9
(23.01.2024, 09:38)Crazy Tom schrieb: moin

du möchtest also in deinen 400 Exceldateien jeweils eine Zelle, in allen die gleiche?, auf 0 setzen
geht im Prinzip gleich wie dein Code aus dem ersten Problem
nur dass du halt nüscht mit ersetzen machst sondern die entsprechende Zelle mit

With ActiveWorkbook
    .Sheets("nur du weißt wie das Blatt heißt").Range("A175").Value = 0
End With


als Schleife geht das natürlich nur wenn die Tabellenblätter alle gleich heißen und auch die Zelle immer die gleiche ist
ansonsten kannst du auch gleich jede Datei öffnen und den Wert der Zelle von Hand nullen


mfg Tom

Hallo Tom,

ja die Zelle ist immer die gleiche (U5). Die Tabellenblätter haben (soweit ich sehen konnte) auch alle die gleiche Bezeichnung (K9630371).

Leider habe ich den Code nicht selbst geschrieben. Daher wäre es wirklich super nett, wenn du mir den Code schreiben könntest und ich ihn einfach nur noch kopieren muss.
Denn ich weiß leider nicht was ich da nun wie ersetzen muss. 20
Antworten Top
#10
aufgrund deiner Angaben könnte das hier ein Weg sein

Code:
Sub Zelle_Nullen()
    dateien = Application.GetOpenFilename _
    ("Excel-Dateien (*.xls), *.xls", MultiSelect:=True)
    Application.ScreenUpdating = False
    If IsArray(dateien) Then
        For i = 1 To UBound(dateien)
            Workbooks.Open dateien(i)
            With ActiveWorkbook
                .Sheets("K9630371").Range("U5").Value = 0
                .Save
                .Close
            End With
        Next
    End If
    Application.ScreenUpdating = True
End Sub

mfg Tom
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • Putsch86
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste