jevira
Goto Top

Massenänderung einer Zelle in etlichen Dokumenten, die sich alle in einem Sub-Ordner innerhalb eines Ordners befinden (60plusx Dateien in 60 Ordnern, die sich in einem Ordner befinden).

Hallo zusammen

Ich soll eine Zelle in jedem Excelfile mit einer Formel versehen. Alle Excelfiles sind gleich aufgebaut und die fragliche Zelle ist überall die M25 im Sheet "Start". Darin soll eine Wennformel reinkommen, bei allen.

Das Problem ist, dass sich alle Dateien in verschiedenen Ordnern befinden, also quasi so:

ORDNER A
ORDNER A.1 (also erster Ordner im Ordner A)
Datei A.1.1 (das ist die fragliche Datei)
ORDNER A.2 (also erster Ordner im Ordner A)
Datei A.2.1 (das ist die fragliche Datei)

etc...

Hat jemand einen Vorschlag, wie das zu lösen ist?

Grüsse und vielen Dank

Content-Key: 196012

Url: https://administrator.de/contentid/196012

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: bastla
bastla 18.12.2012 um 15:56:26 Uhr
Goto Top
Hallo Jevira und willkommen im Forum!

Die Problemstellung ähnelt jener im Beitrag Excel - Suchen und Ersetzen in verschiedenen Dateien ...

Grüße
bastla
Mitglied: Jevira
Jevira 18.12.2012 um 17:10:58 Uhr
Goto Top
Hi Bastla

Danke für die Begrüssung und den guten Verweis!

Wie müsste ich den Code anpassen, um nur die Zelle M25 quasi mit der Wennformel zu überschreiben?

Ich bin leider totaler Laie was das angeht und wäre superfroh, wenn du mir weiterhilfst.

Vielen Dank und beste Grüsse
Jevira
Mitglied: bastla
bastla 19.12.2012 aktualisiert um 12:18:00 Uhr
Goto Top
Hallo Jevira!

Da Du die gewünschte Formel nicht genannt hast, nur das (ungetestete) Grundgerüst als Batch:
@echo off & setlocal
set "Ordner=D:\XL"  
set "Dateien=*.xlsx"  

set "R=%temp%\ReplaceInXL.vbs"  
 >%R% echo Set oXL=CreateObject("Excel.Application")  
>>%R% echo oXL.Workbooks.Open WScript.Arguments(0)
>>%R% echo oXL.Worksheets("Start").Range("M25").FormulaLocal = "=HIER FORMEL EINSETZEN"  
>>%R% echo oXL.ActiveWorkbook.Close True
>>%R% echo oXL.Application.Quit

pushd "%Ordner%"  
for /f "delims=" %%i in ('dir /s /b /a-d %Dateien%') do (  
    echo Bearbeite "%%i"  
    cscript //nologo "%R%" "%%i"  
)
popd
pause
Den Pfad in Zeile 2 und natürlich die Formel in Zeile 8 musst Du noch anpassen. Zum Testen bitte nur mal 2 oder 3 Dateien verwenden ...

Grüße
bastla
Mitglied: Jevira
Jevira 19.12.2012 um 11:14:19 Uhr
Goto Top
Hi bastla

Danke, sieht interessant aus. Ich habe jetzt ein paar Testordner und -dateien eröffnet, weiss aber nicht, wo ich diesen Code einfügen soll. Einfach als normales Makro? Wenn ich das mache, kommt dann eine Fehlermeldung "Fehler beim Kompilieren; Erwartet: Zeilennummer oder Sprungmarke oder Anweisung oder Anweisungsende.

Entschuldige meine katastrophalen, nicht vorhandenen Kenntnisse.


LG
Jevira
Mitglied: bastla
bastla 19.12.2012 um 12:17:39 Uhr
Goto Top
Hallo Jevira!

Das ist (wie oben angemerkt) ein Batch - daher mit dem Datentyp ".bat" oder ".cmd" speichern und per Doppelklick (oder besser aus CMD) ausführen ...

Grüße
bastla
Mitglied: Jevira
Jevira 19.12.2012 um 12:50:51 Uhr
Goto Top
Hey,

Ok, habs jetzt geschafft, es mal als .bat zu speichern und auszuführen. Nur führt es nicht zum gewünschten Ergebnis (es passiert nichts in den Files). Eine Fehlermeldung oder so kommt nicht.

Grüsse
J
Mitglied: bastla
bastla 19.12.2012 aktualisiert um 14:24:24 Uhr
Goto Top
Hallo Jevira!

Sollte es in der geheimen Formel, die Du einfügen willst, Anführungszeichen geben, musst Du diese verdoppeln - also etwa:
>>%R% echo oXL.Worksheets("Start").Range("M25").FormulaLocal = "=WENN(M23>0;""OK"";""Fehler"")"
Grüße
bastla
Mitglied: Jevira
Jevira 19.12.2012 um 14:56:06 Uhr
Goto Top
Du bist top, bastla! Kann man bei dir Nachhilfe nehmen? face-smile Hat beim Testlauf funktioniert, werde es gleich beim "Richtigen" versuchen! Danke nochmals!