Home Office-Hilfe.com - Wir lösen Ihr Problem mit Microsoft Excel, Word, Outlook, PowerPoint, Access gratis Forum Impressum

 [Excel 2000] Kompliziertes Ersetzen
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
derhornist
Besserwisser
Besserwisser


Anmeldedatum: 14.03.2006
Beiträge: 67

BeitragVerfasst am: 18.03.2008, 11:00 Nach oben

Hallo, jetzt wird es kompliziert:

Ich habe 106 Excel- Dokumente. Die Namen habe immer die gleiche Struktur: WWG_Nummer. In einer anderen Datei "Nummern.xls" habe ich die Nummern hinterlegt.
Excel soll nun folgendes ausführen. Die erste Nummer aus der "Nummern.xls" nehmen, die entsprechnde Datei öffnen, den Blattschutz entfernen, dann in Spalte A2 bis A200 nach den gleichen Nummern suchen und diese dann durch einen anderen Text ersetzen. Und zwar immer die gleiche Nummer mit dem gleichen Text z.B. "A","B" usw. Dann soll der Blattschutz wieder rein und die Datei gespeichert und geschlossen werden. Dann die nächste Datei öffnen und das Spiel geht wieder los. Die Nummern in A2 bis A200 sind allerdings von Dok zu Dok verschieden.

Würde so etwas gehen oder ist das zu kompliziert?

Mir würde es eine große Menge an Such und Klick- Arbeit sparen.

Vielen Dank und Gruß
Benutzer-Profile anzeigenPrivate Nachricht senden
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 4850

BeitragVerfasst am: 18.03.2008, 11:38 Nach oben

Hallo!

Was da nun genau ersetzt werden soll, habe ich nicht so ganz verstanden, aber vielleicht kannst du dir diesen Code ja selbst zu Ende basteln:
Code:
Sub Ersetzen()
Const Pfad = "E:\Test\Test\"
Dim Mappe As String, Nummer As Range, Zelle As Range
For Each Nummer In Columns(1).SpecialCells(xlCellTypeConstants)
Mappe = Pfad & "WWG_" & Nummer & ".xls"
Workbooks.Open (Mappe)
For Each Zelle In Workbooks(Mappe).Sheets(1).Range("A2:A200")
If Zelle = Nummer Then Zelle = "Ersatztext"
Next Zelle
Workbooks(Mappe).Close SaveChanges:=True
Next Nummer
End Sub

_________________

Viele Grüße vom Schatzi

------------------------
Dies ist meine Signatur und sie trägt eigentlich nichts zur Lösung deines Problems bei. Sollte sie es dennoch tun, dann bist du definitiv im falschen Forum...Image
Ein Feedback zum ursprünglichen Problem wäre trotzdem nett!
Windows XP, Office2000, Office2007
Benutzer-Profile anzeigenPrivate Nachricht senden
derhornist
Besserwisser
Besserwisser


Anmeldedatum: 14.03.2006
Beiträge: 67

BeitragVerfasst am: 18.03.2008, 11:48 Nach oben

Hallo,
zunächst einmal Danke für die Schnelle Antwort.
Weges des Ersetzens:

In A2 bis A200 stehen verschiedene Personalnummern. Diese Personalnummern sollen durch z.B. Mitarbeiter1, Mitarbeiter2 usw. ersetzt werden. Also immer die gleiche Personalnummer durch den gleichen Text. Aber das dürfte klar sein. Es kann also sein, dass in A2 bis A6 die Personalnummer 1 steht, in A7 bis A20 Nummer 2 und ab A21 bis A25 wieder Nummer 1. Es ist vorher nicht klar, wieviele verschiedene Nummern in der Datei enthalten sind. Das kann nur eine sein, oder auch 10.

Gruß
Benutzer-Profile anzeigenPrivate Nachricht senden
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 4850

BeitragVerfasst am: 18.03.2008, 11:56 Nach oben

Hallo!

Dann musst du Excel erklären, was durch was ersetzt werden soll:
Code:
Sub Ersetzen()
Const Pfad = "E:\Test\Test\"
Dim Mappe As String, Nummer As Range, Zelle As Range
For Each Nummer In Columns(1).SpecialCells(xlCellTypeConstants)
Mappe = Pfad & "WWG_" & Nummer & ".xls"
Workbooks.Open (Mappe)
For Each Zelle In Workbooks(Mappe).Sheets(1).Range("A2:A200")
Select Case Zelle
Case "1": Zelle = "Mitarbeiter1"
Case "2": Zelle = "Mitarbeiter2"
Case "100": Zelle = "ausgeschieden"
'usw.
End Select
Next Zelle
Workbooks(Mappe).Close SaveChanges:=True
Next Nummer
End Sub

_________________

Viele Grüße vom Schatzi

------------------------
Dies ist meine Signatur und sie trägt eigentlich nichts zur Lösung deines Problems bei. Sollte sie es dennoch tun, dann bist du definitiv im falschen Forum...Image
Ein Feedback zum ursprünglichen Problem wäre trotzdem nett!
Windows XP, Office2000, Office2007
Benutzer-Profile anzeigenPrivate Nachricht senden
derhornist
Besserwisser
Besserwisser


Anmeldedatum: 14.03.2006
Beiträge: 67

BeitragVerfasst am: 18.03.2008, 12:21 Nach oben

Ok, vielen Dank.
Ich werde es einmal versuchen.

Gruß
Benutzer-Profile anzeigenPrivate Nachricht senden
derhornist
Besserwisser
Besserwisser


Anmeldedatum: 14.03.2006
Beiträge: 67

BeitragVerfasst am: 18.03.2008, 13:49 Nach oben

Hallo,

ich bekomme immer den folgenden Fehler:

Laufzeitfehler 9
Index außerhalb des gültigen Bereichs

bei Debuggen kommt der Verweis auf folgende Zeile

For Each Zelle In Workbooks(Mappe).Sheets(1).Range("A2:A200")

Was kann das sein?

Danke
Benutzer-Profile anzeigenPrivate Nachricht senden
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 4850

BeitragVerfasst am: 18.03.2008, 14:04 Nach oben

Stimmt!

Probier's mal so:
Code:
Sub Ersetzen()
Const Pfad = "E:\Test\Test\"
Dim Mappe As String, Nummer As Range, Zelle As Range
For Each Nummer In Columns(1).SpecialCells(xlCellTypeConstants)
Mappe = Pfad & "WWG_" & Nummer & ".xls"
Workbooks.Open (Mappe)
For Each Zelle In ActiveWorkbook.Sheets(1).Range("A2:A200")
Select Case Zelle
Case "1": Zelle = "Mitarbeiter1"
Case "2": Zelle = "Mitarbeiter2"
Case "100": Zelle = "ausgeschieden"
'usw.
End Select
Next Zelle
ActiveWorkbook.Close SaveChanges:=True
Next Nummer
End Sub

_________________

Viele Grüße vom Schatzi

------------------------
Dies ist meine Signatur und sie trägt eigentlich nichts zur Lösung deines Problems bei. Sollte sie es dennoch tun, dann bist du definitiv im falschen Forum...Image
Ein Feedback zum ursprünglichen Problem wäre trotzdem nett!
Windows XP, Office2000, Office2007
Benutzer-Profile anzeigenPrivate Nachricht senden
derhornist
Besserwisser
Besserwisser


Anmeldedatum: 14.03.2006
Beiträge: 67

BeitragVerfasst am: 18.03.2008, 14:35 Nach oben

OK,

jetzt kommt:

Laufzeitfehler 438
Objekt unterstützt diese Eigenschaft oder Methode nicht.

mit Verweis auf:

For Each Nummer In Columns(1).SpecialZelles(xlZelleTypeConstants)

Gruß
Benutzer-Profile anzeigenPrivate Nachricht senden
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 4850

BeitragVerfasst am: 18.03.2008, 14:41 Nach oben

Hallo!
Zitat:
For Each Nummer In Columns(1).SpecialZelles(xlZelleTypeConstants)

Liegt es vielleicht an den Schreibfehlern?

Oder stehen deine Nummern nicht in Spalte A?
Dann musst du Columns(x) anpassen, oder durch den exakten Bereich ersetzen, z.B. Range("B5:B39").

_________________

Viele Grüße vom Schatzi

------------------------
Dies ist meine Signatur und sie trägt eigentlich nichts zur Lösung deines Problems bei. Sollte sie es dennoch tun, dann bist du definitiv im falschen Forum...Image
Ein Feedback zum ursprünglichen Problem wäre trotzdem nett!
Windows XP, Office2000, Office2007
Benutzer-Profile anzeigenPrivate Nachricht senden
derhornist
Besserwisser
Besserwisser


Anmeldedatum: 14.03.2006
Beiträge: 67

BeitragVerfasst am: 18.03.2008, 15:14 Nach oben

Den Schreibfehler habe ich korrigiert. Die Nummern stehen auch in Spalte A. Der Fehler kommt aber immer noch.

Gruß
Benutzer-Profile anzeigenPrivate Nachricht senden
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 4850

BeitragVerfasst am: 18.03.2008, 15:28 Nach oben

Hallo!

Dann kann es maximal noch daran liegen, dass deine Nummern durch Formeln entstanden sind.
Dann musst du auf diese Zellen zugreifen:
...(xlCellTypeFormulas)

Ansonsten bin ich mit meinem Latein am Ende, denn bei mir funktioniert es...

_________________

Viele Grüße vom Schatzi

------------------------
Dies ist meine Signatur und sie trägt eigentlich nichts zur Lösung deines Problems bei. Sollte sie es dennoch tun, dann bist du definitiv im falschen Forum...Image
Ein Feedback zum ursprünglichen Problem wäre trotzdem nett!
Windows XP, Office2000, Office2007
Benutzer-Profile anzeigenPrivate Nachricht senden
derhornist
Besserwisser
Besserwisser


Anmeldedatum: 14.03.2006
Beiträge: 67

BeitragVerfasst am: 18.03.2008, 15:48 Nach oben

Also hier ist mein Code:
Code:
Sub Ersetzen()
Const Pfad = "D:\Arbeitsordner\Versuch\"
Dim Mappe As String, Nummer As Range, Zelle As Range
For Each Nummer In Columns(1).SpecialZelle(xlZelleTypeConstants)
Mappe = Pfad & "SB01_RBU_" & Nummer & ".xls"
Workbooks.Open (Mappe)
For Each Zelle In ActiveWorkbook.Sheets(1).Range("A2:A200")
Select Case Zelle
Case "25001535": Zelle = "Mitarbeiter 1"
Case "20464": Zelle = "Mitarbeiter 2"
Case "27004": Zelle = "Mitarbeiter 3"
Case "11009895": Zelle = "Mitarbeiter 4"
Case "495": Zelle = "Mitarbeiter 5"
Case "62785": Zelle = "Mitarbeiter 6"
Case "11017650": Zelle = "Mitarbeiter 7"
Case "69238": Zelle = "Mitarbeiter 8"
Case "70966": Zelle = "Mitarbeiter 9"
Case "5224": Zelle = "Mitarbeiter 10"
Case "76152": Zelle = "Mitarbeiter 11"
Case "11020770": Zelle = "Mitarbeiter 12"
Case "87019": Zelle = "Mitarbeiter 13"
Case "88583": Zelle = "Mitarbeiter 14"
Case "25010880": Zelle = "Mitarbeiter 15"
Case "25012777": Zelle = "Mitarbeiter 16"
Case "11032014": Zelle = "Mitarbeiter 17"
Case "5225": Zelle = "Mitarbeiter 18"
Case "25014618": Zelle = "Mitarbeiter 19"
Case "153591": Zelle = "Mitarbeiter 20"
Case "154506": Zelle = "Mitarbeiter 21"
Case "169351": Zelle = "Mitarbeiter 22"
Case "25015992": Zelle = "Mitarbeiter 23"
Case "178658": Zelle = "Mitarbeiter 24"
Case "204734": Zelle = "Mitarbeiter 25"
Case "25020565": Zelle = "Mitarbeiter 26"
Case "214208": Zelle = "Mitarbeiter 27"
Case "215291": Zelle = "Mitarbeiter 28"
Case "228089": Zelle = "Mitarbeiter 29"
Case "11060307": Zelle = "Mitarbeiter 30"
Case "5407": Zelle = "Mitarbeiter 31"
Case "240739": Zelle = "Mitarbeiter 32"
Case "11063150": Zelle = "Mitarbeiter 33"
Case "11064102": Zelle = "Mitarbeiter 34"
Case "248269": Zelle = "Mitarbeiter 35"
Case "25025090": Zelle = "Mitarbeiter 36"
Case "268331": Zelle = "Mitarbeiter 37"
Case "4646": Zelle = "Mitarbeiter 38"
Case "11072747": Zelle = "Mitarbeiter 39"
Case "6375": Zelle = "Mitarbeiter 40"
Case "478": Zelle = "Mitarbeiter 41"
Case "2010955": Zelle = "Mitarbeiter 42"
Case "4076": Zelle = "Mitarbeiter 43"
Case "291878": Zelle = "Mitarbeiter 44"
Case "2961": Zelle = "Mitarbeiter 45"
Case "837289": Zelle = "Mitarbeiter 46"
Case "107907": Zelle = "Mitarbeiter 47"
Case "11078110": Zelle = "Mitarbeiter 48"
Case "304098": Zelle = "Mitarbeiter 49"
Case "308047": Zelle = "Mitarbeiter 50"
Case "329016": Zelle = "Mitarbeiter 51"
Case "350539": Zelle = "Mitarbeiter 52"
Case "351676": Zelle = "Mitarbeiter 53"
Case "5742": Zelle = "Mitarbeiter 54"
Case "361151": Zelle = "Mitarbeiter 55"
Case "25037315": Zelle = "Mitarbeiter 56"
Case "4905": Zelle = "Mitarbeiter 57"
Case "25040945": Zelle = "Mitarbeiter 58"
Case "403563": Zelle = "Mitarbeiter 59"
Case "5752": Zelle = "Mitarbeiter 60"
Case "419748": Zelle = "Mitarbeiter 61"
Case "25043605": Zelle = "Mitarbeiter 62"
Case "2013970": Zelle = "Mitarbeiter 63"
Case "25046552": Zelle = "Mitarbeiter 64"
Case "25046660": Zelle = "Mitarbeiter 65"
Case "438297": Zelle = "Mitarbeiter 66"
Case "25046873": Zelle = "Mitarbeiter 67"
Case "5383": Zelle = "Mitarbeiter 68"
Case "531": Zelle = "Mitarbeiter 69"
Case "444292": Zelle = "Mitarbeiter 70"
Case "11127590": Zelle = "Mitarbeiter 71"
Case "11133260": Zelle = "Mitarbeiter 72"
Case "4445": Zelle = "Mitarbeiter 73"
Case "501277": Zelle = "Mitarbeiter 74"
Case "25053266": Zelle = "Mitarbeiter 75"
Case "25053455": Zelle = "Mitarbeiter 76"
Case "5433": Zelle = "Mitarbeiter 77"
Case "527118": Zelle = "Mitarbeiter 78"
Case "11146161": Zelle = "Mitarbeiter 79"
Case "3555": Zelle = "Mitarbeiter 80"
Case "25059432": Zelle = "Mitarbeiter 81"
Case "11152665": Zelle = "Mitarbeiter 82"
Case "25059926": Zelle = "Mitarbeiter 83"
Case "4751": Zelle = "Mitarbeiter 84"
Case "11160528": Zelle = "Mitarbeiter 85"
Case "104035": Zelle = "Mitarbeiter 86"
Case "601116": Zelle = "Mitarbeiter 87"
Case "11162262": Zelle = "Mitarbeiter 88"
Case "11163100": Zelle = "Mitarbeiter 89"
Case "11166610": Zelle = "Mitarbeiter 90"
Case "11167990": Zelle = "Mitarbeiter 91"
Case "624103": Zelle = "Mitarbeiter 92"
Case "25068370": Zelle = "Mitarbeiter 93"
Case "2010957": Zelle = "Mitarbeiter 94"
Case "11169766": Zelle = "Mitarbeiter 95"
Case "11224344": Zelle = "Mitarbeiter 96"
Case "644516": Zelle = "Mitarbeiter 97"
Case "11230410": Zelle = "Mitarbeiter 98"
Case "6217": Zelle = "Mitarbeiter 99"
Case "688621": Zelle = "Mitarbeiter 100"
Case "4223": Zelle = "Mitarbeiter 101"
Case "707655": Zelle = "Mitarbeiter 102"
Case "11241923": Zelle = "Mitarbeiter 103"
Case "25077685": Zelle = "Mitarbeiter 104"
Case "736249": Zelle = "Mitarbeiter 105"
Case "104124": Zelle = "Mitarbeiter 106"
Case "751452": Zelle = "Mitarbeiter 107"
Case "546804": Zelle = "Mitarbeiter 108"
Case "11306234": Zelle = "Mitarbeiter 109"
Case "550551": Zelle = "Mitarbeiter 110"
Case "11311927": Zelle = "Mitarbeiter 111"
Case "791568": Zelle = "Mitarbeiter 112"
Case "11313542": Zelle = "Mitarbeiter 113"
Case "104626": Zelle = "Mitarbeiter 114"
Case "25087205": Zelle = "Mitarbeiter 115"
Case "106246": Zelle = "Mitarbeiter 116"
Case "25087940": Zelle = "Mitarbeiter 117"
Case "81141": Zelle = "Mitarbeiter 118"
Case "811477": Zelle = "Mitarbeiter 119"
Case "813068": Zelle = "Mitarbeiter 120"
Case "11318735": Zelle = "Mitarbeiter 121"
Case "5326": Zelle = "Mitarbeiter 122"
Case "11320554": Zelle = "Mitarbeiter 123"
Case "11320590": Zelle = "Mitarbeiter 124"
Case "71126": Zelle = "Mitarbeiter 125"
Case "823297": Zelle = "Mitarbeiter 126"
Case "82667": Zelle = "Mitarbeiter 127"
Case "5146": Zelle = "Mitarbeiter 128"
Case "844491": Zelle = "Mitarbeiter 129"
Case "11326590": Zelle = "Mitarbeiter 130"
Case "556642": Zelle = "Mitarbeiter 131"
Case "25092782": Zelle = "Mitarbeiter 132"
Case "11328440": Zelle = "Mitarbeiter 133"
Case "860664": Zelle = "Mitarbeiter 134"
Case "11325800": Zelle = "Mitarbeiter 135"
Case "25095473": Zelle = "Mitarbeiter 136"
Case "892977": Zelle = "Mitarbeiter 137"
Case "25097137": Zelle = "Mitarbeiter 138"
Case "11338064": Zelle = "Mitarbeiter 139"
Case "2015332": Zelle = "Mitarbeiter 140"
Case "908622": Zelle = "Mitarbeiter 141"
Case "921766": Zelle = "Mitarbeiter 142"
Case "925211": Zelle = "Mitarbeiter 143"
Case "25101159": Zelle = "Mitarbeiter 144"
Case "938992": Zelle = "Mitarbeiter 145"
Case "5211": Zelle = "Mitarbeiter 146"
Case "25103458": Zelle = "Mitarbeiter 147"
Case "25103495": Zelle = "Mitarbeiter 148"
Case "959313": Zelle = "Mitarbeiter 149"
Case "25104070": Zelle = "Mitarbeiter 150"
Case "965769": Zelle = "Mitarbeiter 151"
Case "11359878": Zelle = "Mitarbeiter 152"
Case "992228": Zelle = "Mitarbeiter 153"
End Select
Next Zelle
ActiveWorkbook.Close SaveChanges:=True
Next Nummer
End Sub

Vielleicht hilft das.

Gruß
Benutzer-Profile anzeigenPrivate Nachricht senden
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 4850

BeitragVerfasst am: 18.03.2008, 15:53 Nach oben

Hallo!
Zitat:
For Each Nummer In Columns(1).SpecialZelle(xlZelleTypeConstants)

Hast du nicht gesagt, du hättest die Schreibfehler korrigiert???

Ich schrieb dies:
Zitat:
For Each Nummer In Columns(1).SpecialCells(xlCellTypeConstants)


Wer lesen kann, ist klar im Vorteil...

_________________

Viele Grüße vom Schatzi

------------------------
Dies ist meine Signatur und sie trägt eigentlich nichts zur Lösung deines Problems bei. Sollte sie es dennoch tun, dann bist du definitiv im falschen Forum...Image
Ein Feedback zum ursprünglichen Problem wäre trotzdem nett!
Windows XP, Office2000, Office2007
Benutzer-Profile anzeigenPrivate Nachricht senden
derhornist
Besserwisser
Besserwisser


Anmeldedatum: 14.03.2006
Beiträge: 67

BeitragVerfasst am: 18.03.2008, 16:04 Nach oben

Ja, stimmt. Embarassed

Auf jeden Fall werden die Daten jetzt nacheinander geöffnet und gespeichert. Allerdings wird der Zelleninhalt leider nicht gändert. Liegt das vermutlich daran, dass die Zellen auf dem Blatt2 "LW2" stehen?

Gruß
Benutzer-Profile anzeigenPrivate Nachricht senden
schatzi
Moderator
Moderator


Anmeldedatum: 09.12.2006
Beiträge: 4850

BeitragVerfasst am: 18.03.2008, 16:07 Nach oben

Klar!

Dann natürlich
For Each Zelle In ActiveWorkbook.Sheets(2).Range("A2:A200")
oder
For Each Zelle In ActiveWorkbook.Sheets("LW2").Range("A2:A200")

_________________

Viele Grüße vom Schatzi

------------------------
Dies ist meine Signatur und sie trägt eigentlich nichts zur Lösung deines Problems bei. Sollte sie es dennoch tun, dann bist du definitiv im falschen Forum...Image
Ein Feedback zum ursprünglichen Problem wäre trotzdem nett!
Windows XP, Office2000, Office2007
Benutzer-Profile anzeigenPrivate Nachricht senden
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Ersten 3 Zeichen ersetzen? hd-tux Microsoft Excel Hilfe 2 22.04.2008, 17:27 Letzten Beitrag anzeigen
Keine neuen Beiträge [Excel 2k] Eingaben in gleicher Zelle... magic59 Microsoft Excel Hilfe 2 17.03.2008, 14:31 Letzten Beitrag anzeigen
Keine neuen Beiträge Ersetzen #NV durch 0 Simka Microsoft Excel Hilfe 2 10.03.2008, 13:31 Letzten Beitrag anzeigen
Keine neuen Beiträge Funktion Ersetzen haifischjunge Microsoft Excel Hilfe 1 19.02.2008, 12:40 Letzten Beitrag anzeigen
Keine neuen Beiträge Einfügen von Leerzeichen durch Ersetz... like_mike Microsoft Word Hilfe 2 04.01.2008, 08:51 Letzten Beitrag anzeigen


 Gehe zu:   



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Haftungsausschluss/Disclaimer


SMS kostenlos versenden | Battle-Dream | Tuning Forum | Join the YoungGeneration | krankenversicherungsvergleich | Kalorienarme Rezepte!
Versicherungsvergleich | Bürobedarf | Papier | Betten

Ranking-Hits



Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de