Verknüpfungen

06/06/2009 - 11:43 von Susanne Senger | Report spam
Hallo, NG,

ich habe eine Tabelle, in der Formeln die Werte aus einer anderen Tabelle
(in anderem Verzeichnis) ziehen. Nun àndert sich der Speicherort der
verknüpften Datei nicht, aber ich muss mal auf die Datei A, mal auf B und
mal auf C zugreifen. Die 3 Dateien sind vom Aufbau her komplett identisch,
so dass sich eine Automatisierung anbieten würde, aber wie genau greife ich
per VBA auf die Formel zu und àndere die Verknüpfungen?

Susanne
 

Lesen sie die antworten

#1 Andreas Killer
06/06/2009 - 12:20 | Warnen spam
Susanne Senger schrieb:

ich habe eine Tabelle, in der Formeln die Werte aus einer anderen
Tabelle (in anderem Verzeichnis) ziehen. Nun àndert sich der Speicherort
der verknüpften Datei nicht, aber ich muss mal auf die Datei A, mal auf
B und mal auf C zugreifen. Die 3 Dateien sind vom Aufbau her komplett
identisch, so dass sich eine Automatisierung anbieten würde, aber wie
genau greife ich per VBA auf die Formel zu und àndere die Verknüpfungen?


D.h. im Prinzip hast Du ein Excelfile in das Du aus anderen Dateien
quasi Daten einlàdst?

3 Möglichkeiten:

a.) INDIREKT

Du schreibst z.B. in A1 den Dateinamen und ànderst die Formeln um:
=INDIREKT("[" & A1 &"]Tabelle1!$A$1")
Dann musst Du aber die entsprechende Datei geöffnet haben.

b.) Du wirfst die Formeln über Bord und làdst via VBA die Werte direkt
in die Zellen. (Denk darüber nach die Zellen mit Namen zu versehen um
bei einer Layoutànderung ein Anpassen des VB-Codes zu umgehen)

Hat den Vorteil das Du immer Daten in der Datei hast, keine externen
Verweise und jederzeit die Dateien sonstwohin kopieren, verschieben
kannst.

c.) Du ànderst die Formeln via VBA und tauscht die Dateinamen aus,
Code hàngt unten dran.

Andreas.

Option Explicit
Option Compare Text

Sub ErsetzeDateinamen()
Dim Alt As String, Neu As String
Dim C As Range, S As Worksheet

Alt = "Mappe1.xls"
Neu = "Mappe2.xls"

'Alle Tabellen durlaufen
For Each S In Sheets
'Alle Zellen durchlaufen
For Each C In S.UsedRange
'Ist eine Formel da?
If C.HasFormula Then
'Steht der alte Dateiname drin?
If InStr(C.Formula, Alt) > 0 Then
'Ja, durch den neuen austauschen
C.Formula = Replace(C.Formula, Alt, Neu)
End If
End If
Next
Next
End Sub

Ähnliche fragen