Und zwar habe ich ein kleines Problem! Es geht um folgendes:
Ich (wir auf der Arbeit) ein System zur Stromzählerferneinlesung. Dieses System erzeugt täglich eine Datei mit 96 1/4-h-Werten von ca. 30 Zählern. Zusätzlich bilde ich mit Excel auf dem gleichen Tabellenblatt zusätzliche Werte. Also zusammengenommen etwa 60 Spalten. Zu jeder Salte wird eine Summe oder ein Maximalwert ausgegeben. Zu erwähnen ist auch, dass das System die erzeugten Dateien automatisch im Verzeichnis und unter dem Namen
\\Ies-leit\Rohdaten\RWE\yyyymm\Netz_yyyymmdd.xls
abspeichert (yyyy = Jahreszahl; mm = Monatszahl, dd = Tageszahl)
Ich habe nun ein Programm zu einer Monatstabelle geschrieben, in der quasi "Blanko"-Verknüpfungen zu den einzelnen Tagesdateien sind.
(pro Tag werden 100 Werte von einer Tagesdatei in die Monatsdatei verknüpft, bei 30 Tagen snd das dann ca. 3000 Werte bzw. 3000 Verknüpfungen)
Man gibt als Benutzer per UserForm Monat und Jahr der zu erzeugenden Monatsdatei an, und das Programm aktualisiert rund 3000 Verknüpfungen in der neu zu erstellenden Monatsdatei. Da dieses Aktualisieren aber ca. 5 Minuten dauert, hätte ich gerne eine UserForm, in der mir angezeigt wird, wieviel Verknüpfungen ausgetauscht werden, und welche dann beim Ersetzen hochzählt
( 0...3000 von 3000 Verknüpfungen aktualisiert ). Auch schick wäre ne fortlaufende Statusanzeige.
Hier kommt der Quellcode der Prozedur Austauschen, mit der ich den Ersetzvorgang realisiert habe. Ich habe mal Kommentare drangeschrieben. Und es funktioniert auch. Aber die Optik halt. Sonst sitzt der spätere Benutzer 3 Minuten vorm PC und hat nix zu gucken :-)
'Start der Prozedur Austauschen:
Sub Austauschen()
'Initialisierung + Deklaration der Variablen vom Typ String:
Dim verknüpfung, datei4, datei5, datei6
'Speichere Text in datei4:
datei4 = "\\Ies-leit\rohdaten\RWE\"
'Speichere Text datei5:
datei5 = "\[Netz_"
'Speichere Text in datei6:
datei6 = "\\Ies-leit\rohdaten\RWE\yyyymm\[Netz_yyyymm"
'Addiere die Strings aus datei4, datum, datei5 & datum
'und speichere in verknüpfung:
verknüpfung = datei4 + datum + datei5 + datum
'Ünterdrückung von Bildschirmmeldungen:
Application.DisplayAlerts = False
'Aktiviere im neu gespeicherten Tabellenblatt das Arbeitsblatt Tabelle1:
Application.Worksheets("Tabelle1").Activate
'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False
'Einschalten der Statusbar:
Application.DisplayStatusBar = True
'Zeige "BITTE WARTEN" in Statusbar während des Ersetzens, Neu Berechnens und Speicherns:
Application.StatusBar = "BITTE WARTEN!"
'Ersetzen des in datei6 gespeicherten Strings durch den in verknüpfung gespeicherten
'Strings für das aktive Tabellenblatt Tabelle1:
Cells.Replace What:=datei6, Replacement:=verknüpfung, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
'Neu berechnen:
Calculate
'Speichern:
Application.ActiveWorkbook.Save
'Ausschalten der StatusBar:
Application.DisplayStatusBar = False
'Bildschirmakualisierung wieder einschalten:
Application.ScreenUpdating = True
'Ende der Prozedur:
End Sub
Ach, ich sollte noch erwähnen, dass datum modulglobal deklariert wurde, und z.B. im November den Wert 200411 beinhaltet
Die gesamte Verknüpfung in einer Zelle lautet z.B.:
='\\Ies-leit\rohdaten\RWE\yyyymm\[Netz_yyyymm01.xls]Tabelle1!'$O$3
Es wird also nur dieser Textstring:
"\\Ies-leit\rohdaten\RWE\yyyymm\[Netz_yyyymm" gegen diesen "\\Ies-leit\rohdaten\RWE\yyyymm\[Netz_200411" ausgetauscht
Ich habe auch schon ne Idee: Irgendwas mit derFind-Methode, die erst mal alle zu ersetzenden Verknüpfungen zählt. Den Wert in "i" schreibt, und bei der Replace-Methode wird dann einfach ne andere Variable hochgezählt!
Vielleicht versteht mich ja jemand und hilft mir dann:-)
Danke schonmal!!!!
Grüsse, Oliver