Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
884to888
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
884to888
884to888
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Problem "Verknüpfungen aktualisieren" unterbinden

Problem "Verknüpfungen aktualisieren" unterbinden
09.07.2007 13:31:52
Andreas
Hallo alle zusammen,
ich hab ein Problem mit dem Aufruf von Dateien, welche mit anderen verlinkt sind. Aufgabe des folgenden Programms soll sein, in einem bestimmten Pfad alle vorhanden Exceldateien aufzurufen und in diesen nach bestimmten Verknüpfungen zu suchen, um letztendlich einige von diesen umzuschreiben. Ich muss nämlich eine sehr große Menge Dateien in ein komplett anderes Pfadsystem schaufeln und dazu ist das wichtig.
Option Explicit
Dim z As Long
' Rekursive Prozedur

Public Sub xDirFile(xpath As String)
Dim xa As Long
Dim xDir As String
ReDim xt(0) As String
Dim xi As Long
Dim xAc As String
Dim wb As Workbook
Dim aLinks
Dim i As Integer
Dim newlink As String
' Zulassen von allen Formen von Dateien
xDir = Dir(xpath & "\*.*", vbNormal Or vbReadOnly Or vbHidden _
Or vbSystem Or vbVolume Or vbDirectory Or vbArchive)
xa = 0
If Len(xDir) > 0 Then
xt(0) = xDir
End If
Do While Len(xDir) > 0
xDir = Dir
If Len(xDir) > 0 And Not xDir = "." And Not xDir = ".." Then
xa& = xa& + 1
ReDim Preserve xt(xa)
xt(xa) = xDir
End If
Loop
On Error GoTo Schleife
For xi& = 0 To xa&
If Len(xt(xi)) = 0 Then
Exit For
ElseIf Not xt(xi) = "." And Not xt(xi) = ".." Then
If Len(Dir$(xpath$ & "\" & xt$(xi&), vbNormal Or vbReadOnly Or vbHidden _
Or vbSystem Or vbVolume Or vbDirectory Or vbArchive)) > 0 Then
If Not (GetAttr(xpath & "\" & xt(xi)) And vbDirectory) = vbDirectory Then
If UCase(Right(xt(xi), 3)) = "XLS" Then
' die "0" bedeutet, dass die Frage nach der Aktualisierung
' von Verlinkungen verneint wird
Set wb = Workbooks.Open(xpath & "\" & xt(xi), 0)
aLinks = wb.LinkSources(xlExcelLinks)
If Not IsEmpty(aLinks) Then
For i = 1 To UBound(aLinks)
' Link ändern
' -> Replace ist die Ersetzfunktion
' -> vbTextCompare -> Link kann klein oder groß geschrieben sein
newlink = Replace(aLinks(i), "C:\daten\test", "E:\Bericht\2007\", _
, , vbTextCompare)
wb.ChangeLink aLinks(i), newlink
wb.Save
Next i
End If
wb.Close savechanges:=False
Set wb = Nothing
End If
Else
Call xDirFile(xpath & "\" & xt(xi))
End If
End If
End If
Schleife:
Next xi&
On Error GoTo 0
End Sub


' Aufrufprozedur zum Start
Sub test()
Application.ScreenUpdating = False
' der hier angegebene Pfad wird mit all seinen Unterpfaden durchgegangen
xDirFile "E:\Bericht"
Application.ScreenUpdating = True
End Sub


Wenn durch den Quelltext die Dateien aufgerufen werden, sollen die Nachfragen nach der Aktualisierung von Verknüpfungen verneint werden. Das geschieht eigentlich durch die „0“ in
Set wb = Workbooks.Open(xpath & "\" & xt(xi), 0)
Nun kommt es aber dennoch beim Durchlauf des Programms zu einer (etwas anderen Darstellung) genau derselben Frage.
Kann mir vielleicht jemand verraten, wie ich diese ebenfalls unterbinden kann, denn sonst muss ich bei jeder verlinkten Datei „Abbrechen“ klicken und dafür handelt es sich um zu viele Dateien?
Eine weitere Frage ist, dass das Prinzip des „TextCompare“ nicht funktioniert und mir eben nicht alle Teile, egal ob groß oder klein geschrieben, ersetzt werden. Weiß jemand, was daran falsch ist?
Gruss
Andreas

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem "Verknüpfungen aktualisieren" unterbinden
09.07.2007 13:52:00
BorisHendrik
Hallo Andreas,
versuche doch mal das, bevor du die Arbeitsmappe öffnest:
Application.AskToUpdateLinks = False
die Links werden dann zwar aktualisiert, die Abfrage fällt aber weg.
Gruss
Boris

AW: Problem "Verknüpfungen aktualisieren" unterbinden
09.07.2007 14:06:00
Andreas
Hallo Boris,
die Verknüpfungen dürfen auf gar keinen Fall zu dem Zeitpunkt aktualisiert werden, denn zuerst müssen alle erforderlichen Dateien in die neue Pfadstruktur gebracht und dann ausführlich getestet werden, denn sonst wird es zu sehr, sehr vielen Fehlern kommen.
Es handelt sich um einige tausend Dateien, von denen eine große Anzahl mit den anderen verknüpft sind und die schon verknüpften Dateien können wieder mit weiteren Dateien verknüpft sein. Das ist alles sehr kompliziert auf mehreren Ebenen. Aus diesem Grund benötige ich auch das unterbinden dieser Abfrage.
Gruss
Andreas

Anzeige
AW: Problem "Verknüpfungen aktualisieren" unterbinden
09.07.2007 14:15:00
{Boris}
Hi Andreas,
AskToUpdateLinks unterdrückt natürlich nur die Nachfrage - es wird aber aktualisiert. Was du (wahrscheinlich) suchst, ist:
Thisworkbook.UpdateLinks = xlUpdateLinksNever
Grüße Boris

AW: Problem "Verknüpfungen aktualisieren" unterbinden
09.07.2007 14:14:00
BorisHendrik
bzw kannst du mit dieser Eigenschaft das Updaten auch ganz unterbinden:
ThisWorkbook.UpdateLinks = xlUpdateLinksNever
bzw wieder einschalten:
ThisWorkbook.UpdateLinks = xlUpdateLinksAlways
Gruss
Boris

Danke
09.07.2007 15:01:00
Andreas
Boris, ich dank dir erst einmal und werd das auch schnellstmöglich so ausprobieren!
Gruss
Andreas

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige