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

externe Bezüge ändern (automatisiert)

externe Bezüge ändern (automatisiert)
13.03.2009 10:28:23
Bernd
Hallo,
ich habe eine Excel-Datei, die einige Bezüge zu einer anderen Datei aufweist. Monatlich muss ich nun diese Bezüge nun an eine andere externe Datei manuell anpassen. Bisher muss ich dies manuell pro Bezug durchführen, Suchen/Ersetzen über die gesamte Datei scheidet leider ebenso aus, wie "Verknüpfungen bearbeiten", da mit Hilfe dieser Funktionen wirklich alle Bezüge von einer auf eine andere Datei geändert werden, was aber nicht der Fall sein soll (einige Verknüfungen zu der "Altdatei" sollen nämlich erhalten bleiben und nicht geändert werden.
Vorstellen könnte ich mir, dass ich zentral einen Pfad zu der Bezugsdatei vorgebe und diesen dann im Änderungsfall dort anpasse, so dass alle in Frage kommenden Bezüge automatisch angepasst werden. Das Problem aber, ich wiederhole mich, dass nicht alle möglichen Bezüge angepasst werden sollen. Könnte man evtl. schon beim einzelnen Bezug ansetzen? D. h. die jeweilige Bezugsformel setzt sich zum einem zusammen aus dem zentral vorgegeben Pfad mit dem Dateinamen der Bezugsdatei und dem "individuellen" Teil aus konkretem Tabellenblatt- und Zellbezug. Meine bisherigen Versuche mit Excel-Boardmitteln brachten leider keiner Erfolg.
Ich hoffe, ich konnte mein "Problem" einigermassen verständlich ausdrücken!
Gruß
Bernd

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: externe Bezüge ändern (automatisiert)
13.03.2009 12:21:54
fcs
Hallo Bernd,
wenn du eine Übersetzungsliste erstellts, dann könnte man per Makro die entsprechenden Ersetzungen machen.
Hier eine entsprechende Steuerzungsdatei.
https://www.herber.de/bbs/user/60284.xls
Hier trägst du die gewünschten Alt-/Neu-Daten ein.
Anschließend wechselst du in die Arbeitsmappe in der die Formelteile ersetzt werden sollen und startest das Makro "Ersetzen" in der Steuerungsdatei.
Gruß
Franz
AW: externe Bezüge ändern (automatisiert)
13.03.2009 15:34:22
Bernd
Hallo Franz,
zunächst danke für die Steuerungsdatei, klappt wirklich wie "gewünscht". Mir ist jetzt nun aber die Idee gekommen, dass es vielleicht besser ist, alle Bezüge grundsätzlich nach Vorgabe zu ersetzen, die Ausnahmen aber explizit festzulegen. D. h. ich würde in der Steuerungsdatei den alten und neuen Pfad vorgeben und dann explizit die Ausnahmen angeben, wo nichts ersetzt werden soll (Die Anzahl der Ausnahmen ist deutlich geringer als die Anzahl der zu modifizierenden Bezüge!)
Wäre schön, wenn Du mir da noch helfen könntest!
Vielen Dank schon mal!
Gruß
Bernd
Anzeige
AW: externe Bezüge ändern (automatisiert)
14.03.2009 17:03:54
schauan
Hallo Bernd,
Du könntest imMakr die Ausnahmen definieren. MIt Instr prüfst Du, ob Deine Ausnahme enthalten ist. Ist sie es, kommmt als Ergebnis mindestens 1. Daher die Prüfung auf

Sub Ersetzen()
Dim wks As Worksheet, wksPfad As Worksheet, lngPfad As Long
Dim strAlt$, strNeu$
If MsgBox("Monats-Ersetzung jetzt durchführen?", vbYesNo) = vbYes Then
Set wksPfad = ThisWorkbook.Worksheets("Pfadwechsel")
With wksPfad
For Each wks In ActiveWorkbook.Worksheets
If wks.Name  .Name Then
For lngPfad = 7 To .Cells(.Rows.Count, 1).End(xlUp).Row
strAlt = .Range("B2").Text & .Cells(lngPfad, 1).Text
If InStr(1, strAlt, "NichtErsetzen1") 


Anzeige
AW: externe Bezüge ändern (automatisiert)
18.03.2009 17:15:18
Bernd
Hallo,
könnte man statt speziellen Zellen auch ganze Tabellenblätter im Code ausschalten?
Viele Grüße
Bernd
AW: externe Bezüge ändern (automatisiert)
18.03.2009 17:13:53
Bernd
Hallo Franz,
bin leider erst jetzt zum Testen des Makros gekommen. Ist es richtig, dass jede einzelne Formel eingegeben werden muss, die ersetzt werden soll, sonst "passiert" gar nichts?
Würde auch der umgekehrte Weg funktionieren, also ich trage die Formeln ein, die NICHT ersetzt werden sollen. Könnte man eventuell auch ein spezielles Tabellenblatt vorgeben, auf dem explizit keine Formel ersetzt werden sollte?
Viele Grüße
Bernd
AW: externe Bezüge ändern (automatisiert)
18.03.2009 18:58:08
fcs
Hallo Bernd,
bestimmte Tabellenblätter vom Ersetzen auszuschließen ist kein Problem. Das geht mit einer Select Case-Anweisung.

For Each wks in ActiveWorkbook
Select Case wks.Name
Case "Tabelle1", TabelleXYZ"
'do nothing
Case Else
'Hier dann der Code-Abschnitt für das Ersetzen
End select
Next


Du muss eigentlich nicht alle Formeln eingeben, sondern "nur" die Formelteile, die ersetzt werden sollen. Da ich deine Formeln nicht kenne, kann ich nur schwer sagen wie es evtl. am geschicktesten ist.
Evtl. muss man ja "nur" die Reihenfolge der Ersetzungen besonders geschickt wählen.
Der umgekehrte Weg geht wahrscheinlich auch, ist aber wesentlich komplizierter zu programmieren, da jetzt Zellenweise eine Prüfung und ggf. Ersetzung gemacht werden muss und nicht mehr Blattweise.
Gruß
Franz

Anzeige
AW: externe Bezüge ändern (automatisiert)
19.03.2009 11:08:34
Bernd
Hallo Franz,
irgendwie will es mit dem "Kombinieren" der beiden Codes nicht klappen, iich bekomme dauernd Kompilierungsfehler. Kannst Du mir vielleicht den Komplettcode zu Kontrolle nochmal einstellen!
Vielen Dank schon mal!
Viele Grüße
Bernd
AW: externe Bezüge ändern (automatisiert)
19.03.2009 19:08:58
fcs
Hallo Bernd,
hier der angepasste und leicht modifizierte Code. (allerdings ungetestet).
Die Tabellennamen muss du natürlich noch anpassen.
Gruß
Franz

Sub Ersetzen()
Dim wks As Worksheet, wksPfad As Worksheet, lngPfad As Long
Dim strAlt$, strNeu$
If ActiveWorkbook.Name = ThisWorkbook.Name Then
MsgBox "Diese Makro sollte nur gestartet werden, wenn die " _
& "Arbeitsmappe mit den Formeln die aktive Arbeitsmappe ist!"
Else
If MsgBox("Monats-Ersetzung jetzt durchführen?", vbYesNo) = vbYes Then
Set wksPfad = ThisWorkbook.Worksheets("Pfadwechsel")
For Each wks In ActiveWorkbook.Worksheets
Select Case LCase(wks.Name)
Case "tabelle1", "tabelle2" 'Namen nur mit Kleinbuchstaben!
'in diesen tabellen keine Formeln ersetzen
Case Else
For lngPfad = 7 To wksPfad.Cells(wksPfad.Rows.Count, 1).End(xlUp).Row
strAlt = wksPfad.Range("B2").Text & wksPfad.Cells(lngPfad, 1).Text
strNeu = wksPfad.Range("B3").Text & wksPfad.Cells(lngPfad, 2).Text
wks.Cells.Replace What:=strAlt, replacement:=strNeu
Next
End Select
Next
End If
End If
End Sub


Anzeige
AW: externe Bezüge ändern (automatisiert)
20.03.2009 09:29:21
Bernd
Hallo Franz,
ich habe das Makro nun mal laufen lassen und es scheint zu funktionieren, wenn ich
den Teil des Codes
If
ActiveWorkbook.Name = ThisWorkbook.Name Then
MsgBox "Diese Makro sollte nur gestartet werden, wenn die " _
& "Arbeitsmappe mit den Formeln die aktive Arbeitsmappe ist!"
Else

weglasse, ansonsten erhalte ich nämlich immer die Meldung :
Diese Makro sollte nur gestartet werden, wenn die Arbeitsmappe
mit den Formeln die aktive Arbeitsmappe ist!"
und es wird keine Ersetzung durchgeführt!
Warum hat Du diesen neuen Codeteil eigentlich zusätzlich eingebaut bzw. was sollte er evtl. abfangen?
Auf jeden Fall schon mal vielen Dank vorab für die Mühe!
Vielleicht noch eine kleine Ergänzungsfrage: Bei der Angabe der Tabellennamen kann ich wohl mit Platzhaltern arbeiten wie * oder? Zumindest scheint es bei meinem Test funktioniert zu haben.
Viele Grüße
Bernd
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige