Schwierig, schwierig - weiß jemand eine Lösung?
Pascual
In dieser zentralen Datei gibt es ein Kundendatensatz pro Zeile. Die dritte Spalte (C) beinhaltet dabei ein Kundenkürzel, das aus drei Buchstaben besteht. Genau dieses Kundenkürzel findet sich jeweils im Namen der ca. 600 Kundendateien wieder (die Dateien heißen also z.B. gio.xls, oder mar.xls, etc.).
Um die Neuanlage von Kunden zu vereinfachen, gibt es in der zentralen Datei bereits Dummy-Zeilen, die mit einem Dummy-Kunden mit Kundenkürzel xxx hinterlegt sind. Gleichzeitig gibt es im Ordner mit den Kundendateien auch Dummy-Dateien, die xxx.xls heißen.
So, und jetzt wirds spannend: Wir benötigen ein Makro, dass man am Anfang jeder Tabellenzeile der zentralen Datei positionieren kann, und dass in der Lage ist, genau die Kundendatei zu öffnen, die dem Kundenkürzel der entsprechenden Zeile entspricht.
Um das Öffnen der Dateien zu ermöglichen, haben wir bereits eine Hilfsspalte (Spalte AM) eingerichtet, die den Pfad zu den ca. 600 Kundendateien enthält. Der Dateiname in diesem Pfad lautet bei Neuanlage zunächst immer xxx.xls.
Dieses Makro soll also in die Spalte C gehen, sich das Kudenkürzel herauskopieren und anschliessend in der gesamten Dummy-Zeile den String xxx durch das Kudenkürzel ersetzen. Darauf hin soll es den Befehl Datei öffnen wählen und in das Feld Datei den Pfad inkl. Dateiname aus der Spalte AM einfügen und die Datei öffnen.
Wir haben bisher zwei getrennte Makros. Das eine ersetzt xxx durch den Inhalt von Spalte C und das andere geht zu Spalte AM und öffnet eine Datei. Das funktioniert gut, hilft uns aber nicht weiter, weil diese Makros natürlich pro Zeile angepasst werden müßen. Wir müßen dem Makro also sagen, in welcher Zeile er sich befindet.
Wir hätten gerne ein Makro, das selbst merkt, in welcher Zeile es ist, und daraufhin in eben dieser Zeile den Ersetzungsvorgang vornimmt und anschliessend die richtig Datei öffnet.
Falls jemand versteht, was mir meinen, würden wir uns (wundern:-) und sehr über einen Tip freuen!
Unsere zwei Makros sehen wie folgt aus:
Sub openfile()
' openfile Makro
' Makro am 17.03.2006 von pcs aufgezeichnet
Workbooks.Open Filename:=Range("AM3"), UpdateLinks:=3
End Sub
Sub changefmname()
' changefmname Makro
' Makro am 17.03.2006 von pcs aufgezeichnet
Range("C4:dd4").Replace What:="xxx", Replacement:=Cells(4, 3).Value, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("C10").Select
Application.CutCopyMode = False
End Sub