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

Verknüpfungen

Verknüpfungen
bassi2008
Hallo,
ich habe ein Problem an dem ich nicht weiter komme und mich hilfesuchend an dieses Forum wende.
Die Situation:
Ich habe mehrere Exeldateien in ein Netzwerk eingespielt. Diese Dateien (7) greifen alle auf eine "Herzdatei" zu.
1. via Verknüpfung - Werte durch Formeln aktualisieren
2. via öffnen, Werte dorthin kopieren und wieder schließen
Die Wahrscheinlichkeit, dass zwei Dateien zur selben Zeit diese Herzdatei öffnen wollen ist relativ gering (bisher jedenfalls noch nicht vorgekommen)
Alle Dateien zusammen liegen im Netzwerk auf G.
Bei allen Dateien ist der Blattschutz sowie auch der Arbeitsmappenschutz aktiviert.
Bei allen Dateien steht Berechnung und Aktualisierung auf Automatisch.
Das Problem:
Beim Einbringen der Dateien in das System haben bei einem Teil der Dateien - ich nenn das jetzt mal Programme - die Verknüpfungsformeln verändert. Der Zugriff welcher korrekter Weise auf G sein sollte war plötzlich im gesamten Programm auf C: Eigene Dateien.
(Die Rechte für einen Zugriff auf C ist bei allen Stationen generell untersagt)
Ich habe dies auf falsche Bedienung zurück geführt. (Die Programme wurden auf G "geschoben" statt vielleicht besser kopiert?)
Bei der Arbeit selbst ist dieses Problem bis gestern nicht mehr aufgetaucht.
Gestern nun wie gesagt steht ein Programm von sieben auf Rot.
Und siehe da - wieder dieser Fehler. Alle Verknüpfungen weisen auf C: eigene Dateien statt auf G wo sich alle Dateien befinden.
Und diesmal hat niemand etwas verschoben oder kopiert oder dergleichen.
Wie kann das nun passieren?
Und kann man das eventuell unterbinden?
Vielen Dank fürs lesen schonmal :-)
bassi

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Verknüpfungen
06.09.2012 11:50:57
UweD
Hallo
gehe mal wie folgt vor.
für Excel 2007
- Öffne eine Datei
- dann 'Daten'
- 'Verknüpfungen bearbeiten'
- dort werden die Quelldateien angezeigt
- markiere diese
- 'Quelle ändern'
- such den richtigen Pfad.
- ...
Gruß UweD

AW: Verknüpfungen
06.09.2012 15:05:09
bassi2008
Hallo Uwe,
danke für deine Antwort.
Diesen Weg tätige ich sozusagen jeden Tag um die Verknüpfungen zu prüfen.
Dort erscheint stets ein -OK-
Nur eben diese zweimal - einmal beim einstellen, einmal gestern stand da -Quelle nicht gefunden-
Ich vermute mal ganz laienhaft, dass es sich um eine Störung im Netzwerk zu genau dem Zeitpunkt handelt, indem eines der Programme auf diese Herzdatei zugreifen will.
Dann - so scheint mir, wenn Excel also die Datei nicht im Netzwerk (unter G) findet, versucht es diese Datei (und das ist mir der unlogische Schritt) unter C zu suchen.
Nur eben mit dem Erfolg, dass es gleich sämtliche Verknüpfungen ändert - und vor allem dann so lässt :-(
Nehmen wir einmal an, dass Excel tatsächlich so arbeitet - kann man nicht mit irgendeinem VBA dafür sorgen, dass es die Änderung der Verknüpfungen unterlässt, bzw nach dem unsinnigen Versuch wieder Rückgängig macht und im Fall der Netzwerkstörung einfach die Datei von mir aus schließt oder so?
Danke schon mal :-)
LG bassi

Anzeige
AW: Verknüpfungen
06.09.2012 16:07:00
UweD
Hi
nur mal so gesponnen
- kann es sein, daß jemand alle Dateien von dem Netzordner kopiert hat auf seinen Rechner C:
- dran gearbeitet hat
- und danach nur die bearbeitete Datei zurückkopiert hat?
Dann wäre die Verknüpfung noch nach C:
Gruß UweD

AW: Verknüpfungen
06.09.2012 16:16:39
bassi2008
...neee...
auf meine Dateien hat keiner Zugriff. Da will und kommt auch keiner ran...
Aber ich muss zugeben das wär ne schöne und vor allem einfache Lösung :-)
LG bassi

AW: Verknüpfungen
06.09.2012 16:29:14
UweD
Evtl. Rücksicherung eines alten backups?

AW: Verknüpfungen
06.09.2012 16:35:58
bassi2008
...auch nicht schlecht :-)
aber die Daten lagen nie auf C und kommen da auch nie hin - das ist hier Fort Nox sozusagen...
Somit kann es kein es ein backup auf C nicht geben.
...und da ich der einzige bin, der daran rumschraubt - bzw rumschrauben kann, kann ich ein zutun von außen ausschließen.
LG bassi

Anzeige
AW: Verknüpfungen
06.09.2012 16:38:55
bassi2008
...aber mal abgesehen von dem Grund - den ich noch immer in einer Netzwerkübertragung sehe - kann man nicht irgendwie diese - wenn es denn eine ist - Exceleigenart des speicherns der C Verknüpfungen unterbinden?
Irgendeine Sperre?
LG bassi

AW: Verknüpfungen
07.09.2012 09:55:10
fcs
Hallo Bassi,
wie läuft den
2. via öffnen, Werte dorthin kopieren und wieder schließen

ab?
Wenn hier jemand versehentlich auf "Speichern unter" klickt und gleichzeitig eine Datei mit verknüpften Formeln geöffnet ist, dann kann es passieren, dass die Datei nicht im urspünglichen Verzeichnis gespeichert wird, sondern woanders -am wahrscheinlichsten dann unter "Eigene Dateien".
Das gleiche kann natürlich auch passieren, wenn zwei Anwender gleichzeitig eine Datei versuchen zu öffnen und der Hinweis "Datei ist zur Zeit geöffnet von ..." ignoriert und die Datei schreibgeschützt geöffnet wird.
Gegenmassnahmen sind schwierig und eigentlich nur per Makro möglich, in dem vor dem Speichern geprüft wird, ob
a) der Schreibschutz der Datei aktiv ist (d.h. die Datei wurde schreibgeschützt geöffnet),
b) der "Speichern unter"-Dialog verwendet wird.
Per Makro könnte man beim Öffnen der Dateien auch die Verknüpfungen prüfen und falls erforderlich auf das G:-Verzeichnis korrigieren.
Makros erfordern dann natürlich, dass diese beim Öffnen auch aktiviert werden bzw. werden dürfen.
Gruß
Franz

Anzeige
AW: Verknüpfungen
07.09.2012 10:46:45
bassi2008
Hallo Franz,
besten Dank für deine Antwort.
zum ersten Teil deiner Frage/Antwort:
dieses "via öffnen, Werte dorthin...." läuft tatsache über ein Macro ab. Das Macro kopiert die Daten der geöffneten Datei, öffnet die unter G liegende Datei, schreibt dort die Daten rein, schließt die unter G liegende Datei wieder und kehrt zurück zur Ursprungsdatei.
Das es jemand schafft in der Zeit überhaupt auf "Speichern unter" zu klicken halte ich für unwahrscheinlich. Auch müsste er dann ja wiederum, um auf C speichern zu können, Zugriff auf C haben. C ist aber an allen Stationen gesperrt - C ist nicht einmal anwählbar/sichtbar.
zum zweiten Teil - "...Das gleiche kann natürlich auch passieren...":
Wenn zwei Anwender gleichzeitig zugreifen erscheint bei einem der beiden - da es sich ja um ein Macro handelt - dieses Debuggen - Fenster. Ein Schreibgeschütz öffnen ist hier nicht möglich. Es gibt nur Beenden und Debuggen zur Auswahl.
Was mich natürlich sehr ärgert ist, wenn der User nicht so clever ist und auf Beenden drückt sondern auf Debuggen, dass sich dann mein Macro zur allgemeinen Betätigung öffnet :-(
Der Schreibschutz des Blattes bzw der Arbeitsmappe selbst verhindert ein Verändern eines Macros leider nicht :-(
...und um auf die Grundidee wieder zurück zu kommen - auch hier wäre mir ein Speichern unter C unverständlich - auf C gibt es keinen Zugriff...
Ausser wie gesagt - Excel macht das von Hause aus, ohne ein Zutun von außen.... :-(
zum dritten Teil - Gegenmaßnahmen:
Du schreibst man könnte via Macro beim öffnen der Dateien die Verknüpfungen prüfen und auf G korrigieren falls erforderlich?
Wie stell ich das an?
Das wäre ja genau das was womit ich diesen wunderlichen Fall in den Griff bekommen könnte.
LG bassi

Anzeige
AW: Verknüpfungen
07.09.2012 13:56:42
fcs
Hallo bassi,
ein Makrobeispiel zur Prüfung der Verknüpfungen findest du im Anschluss. Verzeichnis- und Dateinamen muss du anpassen. Ich hab das Makro nur auf lokalen Laufwerken Testen können - nicht in einem Netzlaufwerk.
Wenn zwei Anwender gleichzeitig zugreifen erscheint bei einem der beiden - da es sich ja um ein Macro handelt - dieses Debuggen - Fenster. ..... Es gibt nur Beenden und Debuggen zur Auswahl.
Was mich natürlich sehr ärgert ist, wenn der User nicht so clever ist und auf Beenden drückt sondern auf Debuggen, ..... :-(

Dies sollte man durch eine Fehlerprüfung auch in den Griff bekommen.
Sub aaSpeichern()
' Ergänzung Fehlerbehandlung
On Error GoTo Fehler
'ab hier der bisherige Code
'Fehlerbehadlung
Err.Clear
Fehler:
If Err.Number  0 Then
MsgBox "Fehler-Nr.: " & Err.Number & vbLf & Err.Description & vbLf & vbLf _
& "Daten konnten nicht gespeichert werden, Zieldatei z.Zt. geöffnet. " & vbLf _
& "Bitte später nochmals versuchen.", _
vbInformation + vbOKOnly, _
"Fehler - Speichern-Makro"
End If
End Sub
Gruß
Franz
'Makro unter "DieseArbeitsmappe" in den Dateien mit Verknüpfungen
Private Sub Workbook_Open()
'Prüfen der verknüpften Dateien
Dim varItem, intIndex As Integer
Dim arrFiles(1 To 7) As String, strDatei As String, strVerzeichnis As String
Dim bolKorrekt As Boolean
'Verzeichnis der Dateien
Const strPfad As String = "C:\Users\Public\Test\Zwischenordner"
'Namen der verknüpften Dateien
arrFiles(1) = "ABC_DAten01.xlsx"
arrFiles(2) = "XYZ_DAten01.xlsx"
arrFiles(3) = "123_DAten01.xlsx"
arrFiles(4) = "456_DAten01.xlsx"
arrFiles(5) = "789_DAten01.xlsx"
arrFiles(6) = "012_DAten01.xlsx"
arrFiles(7) = "FormelDatei.xlsm"
'Prüfung ob Datei aus dem korrekten Verzeichnis geöffnet wurde
If LCase(Me.Path)  LCase(strPfad) Then
MsgBox "Bitte nur Datei """ & Me.Name & """ im Verzeichnis """ & strPfad _
& """ öffnen" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"
Me.Close savechanges:=False
Else
'Prüfen/Korrigieren der Verknüpfungen
For Each varItem In Me.LinkSources(Type:=xlExcelLinks)
strDatei = Mid(varItem, InStrRev(varItem, Application.PathSeparator) + 1)
strVerzeichnis = Left(varItem, InStrRev(varItem, Application.PathSeparator) - 1)
'Dateiname prüfen durch Vergleich mit Liste
bolKorrekt = False
For intIndex = 1 To 7
If LCase(strDatei) = LCase(arrFiles(intIndex)) Then
bolKorrekt = True
Exit For
End If
Next intIndex
If bolKorrekt = True Then
'Verzeichnisse vergleichen
If LCase(strPfad)  LCase(strVerzeichnis) Then
'Link korrigieren
Me.ChangeLink Name:=varItem, _
NewName:=strPfad & Application.PathSeparator & strDatei, Type:=xlExcelLinks
MsgBox "Falsche Verküpfung """ & varItem & """ wurde korrigiert"
End If
Else
MsgBox "Verknüpfung """ & varItem & " verweist auf inkorrekte Datei!" & vbLf & vbLf _
& "Bitte XYZ (Tel. 1234) informieren" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"
Me.Close savechanges:=False
End If
Next varItem
End If
End Sub

Anzeige
AW: Verknüpfungen
07.09.2012 14:27:17
bassi2008
Hallo Franz,
das liest sich alles richtig gut. So müsste es funktionieren. Genial.
Jetzt juckt es in den Fingern und ich darf nicht ran - ich komm heut und auch übers WE nicht an die Daten :-(
Sehr ärgerlich.
Nächste Woche werd ich mich aber mit Genuss darauf stürzen und rumtesten.
Franz ich danke dir schon mal herzlichst für deine Mühen.
Auch an alle anderen nochmals besten Dank für die Hilfe.
Ich werde auf jeden Fall noch eine Rückmeldung hierzu abgeben.
LG bassi

AW: Verknüpfungen
10.09.2012 12:37:08
bassi2008
Hallo Franz,
Hier nun mein Bericht ;-)
Ich will das nun der Einfachheit halber in zwei Bereiche unterteilen.
Als erstes der Versuch das Ändern der Verknüpfungen zu unterbinden:
Vorweg noch ein Versuch, die Verlinkung bei jedem anklicken von Excel zu aktualisieren.
Klappt aber nicht so recht. Leider nur dann, wenn man zwei Excelfenster hin und her klicken kann. Bei einem offenen Fenster und einer Webseite meinetwegen herrscht Schweigen im Walde…
.
Private Sub Workbook_Activate()
Application.ScreenUpdating = True
Application.AskToUpdateLinks = False
Application.ScreenUpdating = True
End Sub

Aber das ist auch eigentlich nicht so wichtig grad. Derzeit öffne ich die Verlinkte Datei zum aktualisieren „einfach“… 
Aber zurück zum eigentlichen:
Ich habe zwei Sachen heraus genommen.
Zum einen die Überprüfung, ob die zu verwendende Datei auf dem richtigen Laufwerk liegt.
Der User kann nur diese eine Datei öffnen. Der Link liegt auf dem Desktop. An was anderes wie Explorer oder so, um auswählen zu können, kommt er nicht ran. Passt der Link zum Programm nicht, schlägt die Anwahl über den Link schon fehl.
Dann habe ich das automatische schließen der Datei weg gelassen.
Hier hat Excel um Hilfe geschrien und wollte nur noch nach Hause zu Papa Bill…
Erste Fehlermeldung: Systemfehler…Schwerwiegender Fehler irgendwas…
Danach eine Visual Basic Meldung: Objekt wurde entladen
Im Anschluss: Fehlerbericht senden…
Datei ließ sich nicht mehr öffnen – sofortiger Excelabsturz.
Übrig geblieben ist dieser angepasste Code:
Private Sub Workbook_Open()
'Prüfen der verknüpften Dateien
Dim varItem, intIndex As Integer
Dim arrFiles(1 To 4) As String, strDatei As String, strVerzeichnis As String
Dim bolKorrekt As Boolean
'Verzeichnis der Dateien
Const strPfad As String = "G:\Maschinenverwaltung"
'Namen der verknüpften Dateien
arrFiles(1) = "H2.xls"
arrFiles(2) = "P1.xls"
arrFiles(3) = "P2.xls"
arrFiles(4) = "Stammdaten.xls"
'Prüfen/Korrigieren der Verknüpfungen
For Each varItem In Me.LinkSources(Type:=xlExcelLinks)
strDatei = Mid(varItem, InStrRev(varItem, Application.PathSeparator) + 1)
strVerzeichnis = Left(varItem, InStrRev(varItem, Application.PathSeparator) - 1)
'Dateiname prüfen durch Vergleich mit Liste
bolKorrekt = False
For intIndex = 1 To 4
If LCase(strDatei) = LCase(arrFiles(intIndex)) Then
bolKorrekt = True
Exit For
End If
Next intIndex
If bolKorrekt = True Then
'Verzeichnisse vergleichen
If LCase(strPfad)  LCase(strVerzeichnis) Then
'Link korrigieren
Me.ChangeLink Name:=varItem, _
NewName:=strPfad & Application.PathSeparator & strDatei, Type:=xlExcelLinks
MsgBox "Falsche Verküpfung """ & varItem & """ wurde korrigiert"
End If
Else
MsgBox "Verknüpfung """ & varItem & " verweist auf inkorrekte Datei!" & vbLf & vbLf _
& " Bitte  K.Preiß  PP L3 informieren – Tel.: 245" & vbLf & vbLf _
End If
Next varItem
End Sub
Bis hierhin funktioniert der Code. Bzw ich konnte es bisher schlecht testen gelinde gesagt. Weil es passierte eigentlich nichts… Mit anderen Worten die Verlinkung scheint zu funktionieren.
Wenn ich eine der „arrFiles“ in der oberen Zeile mit Namen ändere, dann ändert mir Excel jetzt tatsächlich alle Verlinkungen entsprechend diesem Eintrag.
Wenn ich aber dann den Eintrag im Code wieder richtig stelle, wird die Verlinkung im Arbeitsblatt nicht wieder zurück korrigiert… wäre das aber nicht eigentlich logisch dann?
*grübel*
Hier stoppt der Ablauf und markiert diese Zeile:
Me.ChangeLink Name:=varItem, _
NewName:=strPfad & Application.PathSeparator & strDatei, Type:=xlExcelLinks
Der zweite Teil bezieht sich auf das Ausblenden Debuggen Fenster mit einblenden der MessageBox.
Sub aaSpeichern()
' Ergänzung Fehlerbehandlung
On Error GoTo Fehler
'ab hier der bisherige Code
'Fehlerbehadlung
Err.Clear
Fehler:
If Err.Number 0 Then
MsgBox "Fehler-Nr.: " & Err.Number & vbLf & Err.Description & vbLf & vbLf _
& "Daten konnten nicht gespeichert werden, Zieldatei z.Zt. geöffnet. " & vbLf _
& "Bitte später nochmals versuchen.", _
vbInformation + vbOKOnly, _
"Fehler - Speichern-Makro"
End If
End Sub Kurze Erklärung:
Mein Code kopiert Daten aus der eigenen Datei. Öffnet eine andere. Fügt dort die kopierten Daten ein und kehrt zurück zur ersten Datei um weiter Daten zu kopieren um auch diese noch einfügen zu können.
Der Code sollte dieses aufploppen des Debuggenfensters verhindern wenn die Datei bereits von einem anderen User verwendet wird und eine Fehlermeldung auswerfen.
Es passiert aber folgendes:
Steht die Datei offen auf die zugegriffen werden soll erscheint kein Debuggenfenster. Das ist schon mal genial. Der Code läuft bis zu Ende durch. Keine Fehlermeldung. Aber auch kein Erfolg. Der Eintrag der getätigt werden müsste fehlt nun natürlich.
Schließt man jetzt die offen stehende Datei auf die via VBA eigentlich zugegriffen werden sollte erscheint die Meldung, dass die Datei jetzt zur Verfügung steht.
Ich habe nun für einen weiteren Testlauf den Namen der Datei auf die für das zweite kopieren nochmals zugegriffen werden soll umbenannt, um einen ähnlichen Fehler zu provozieren.
Hier funktioniert alles perfekt.
Debuggenfenster fehlt – dafür kommt eine Fehlermeldung.
Heißt also – wenn der Name der Datei fehlerhaft ist, bzw die Verlinkung dorthin, dann funktioniert der code wie gewünscht.
Ist die aber Datei geöffnet auf die zugegriffen werden soll – funktioniert er in soweit, dass das Debuggenfenster nicht erscheint – aber es erscheint aber eben auch keine gewünschte Fehlermeldung…
Ich hoffe ich konnte mich halbwegs verständlich ausdrücken 
Bisweilen tu ich mich damit etwas schwer 
LG bassi

Anzeige
AW: Verknüpfungen
10.09.2012 15:57:34
fcs
Hallo bassi,
Dann habe ich das automatische schließen der Datei weg gelassen.
Hier hat Excel um Hilfe geschrien und wollte nur noch nach Hause zu Papa Bill…
Erste Fehlermeldung: Systemfehler…Schwerwiegender Fehler irgendwas…

Das wird dann möglicherweise durch ein Workbook_before_Close-Ereignismakro verursacht.
Das zu umgehen ist leider nicht ganz einfach.
Bis hierhin funktioniert der Code.
Na super!
Bzw ich konnte es bisher schlecht testen gelinde gesagt.
Workbook_Open-Ereignismakros sind manchmal etwas tricky zum Testen.
Man kann das Makro aber nach dem Ändern direkt im VBA-Editor per Taste F8 starten und schrittweise abarbeiten.
Test 1: Kopiere eine Datei (ohne Änderung des Dateinamens), aus der die sich öffnende Datei Daten per Formel holt, in ein anderes Verzeichnis. Ändere nach dem öffnen der Datei mit Formel die Quelle der Verknüpfung auf die kopierte Datei . Datei speichern und schliessen. Beim Öffnen der Datei sollte die Meldung "Falsche Verküpfung """ & varItem & """ wurde korrigiert" angezeigt werden.
Test 2: Kopiere eine Datei (mit Änderung des Dateinamens), aus der die sich öffnende Datei Daten per Formel holt. Ändere nach dem öffnen der Datei mit Formel die Quelle der Verknüpfung auf die kopierte Datei . Datei speichern und schliessen. Beim Öffnen der Datei sollte die Meldung ""Verknüpfung """ & varItem & " verweist auf inkorrekte Datei!....."" angezeigt werden.
Weil es passierte eigentlich nichts… Mit anderen Worten die Verlinkung scheint zu funktionieren.
Hier hilft es manchmal in der Testphase zusätzliche MsgBoxen einzubaue oder ggf. per Debug.Print Hinweise auszugeben.
Wenn ich eine der „arrFiles“ in der oberen Zeile mit Namen ändere, dann ändert mir Excel jetzt tatsächlich alle Verlinkungen entsprechend diesem Eintrag.
In diesem Fall sollten eigentlich
MsgBox "Verknüpfung """ & varItem & " verweist auf inkorrekte Datei!" & vbLf & vbLf _
& " Bitte  K.Preiß  PP L3 informieren – Tel.: 245"

eine Meldung anzeigen.
Korrekturen von Links passieren nur, wenn der Name der verknüpften Dateien in dem Array gefunden wurde, aber das Verzeichnis des Links nicht mit dem vorgebenen Verzeichnis übereinstimmt.
Wenn ich aber dann den Eintrag im Code wieder richtig stelle, wird die Verlinkung im Arbeitsblatt nicht wieder zurück korrigiert… wäre das aber nicht eigentlich logisch dann?
Das wäre unlogisch: siehe oben
Wenn die Dateien der Verknüpfungen in der sich öffnenden Datei nicht mit den Namen in der Liste übereinstimmen, dann ist eine automatische Korrektur nicht möglich. Excel kennt die korrekte Zuordnung der Dateien nicht. Das ginge evtl. wenn man in der Datei Zellen mit Referenzformeln hat, die zu bestimmten Dateien verknüpft sein müssen, dann könnte man einen Abgleich zwischen vorhandenen und korrekten Verknüpfungen machen - nur mal so als Idee. D.h. man muss den Formeltext analysieren, um ggf. die korrekte Quelle zu einer Verknüpfung zuweisen zu können.
Die Fehlermeldung kommt dann wahrscheinlich, weil die zu verknüpfende Datei nicht existiert.

Zu deinem 2. Problem

Ich hab persönlich keine Möglichkeit Netzwerksbetrieb mit 2 Usern zu fahren.
Hier gibt es evtl. die Möglichkeit vor dem Öffnen in Excel über eine andere Open-Anweisung zu prüfen, ob die Datei schon geöffnet ist.
https://www.herber.de/forum/archiv/1204to1208/t1206912.htm#1206912
Public Function IsFileOpen(ByRef Path As String) As Boolean
Dim FileNr As Integer
Dim ErrorNr As Long
'open file for testing
On Error Resume Next
FileNr = FreeFile
Open Path For Input Lock Write As #FileNr
ErrorNr = Err.Number
Close #FileNr
On Error GoTo 0
If ErrorNr  0 Then
IsFileOpen = True
End If
Err.Clear
End Function
Public Sub Makro1()
If IsFileOpen("L:\Test\test.xls") = True Then
MsgBox "Die Datei ist zur Zeit geöffnet. Bitte später nochmals probieren!", _
vbInformation, "Daten speichern"
Else
'Daten speichern
End If
End Sub
Gruß
Franz

Anzeige
AW: Verknüpfungen
11.09.2012 07:50:50
bassi2008
Guten Morgen Franz :-)
ich habe jetzt um die ganze Sache etwas leichter zu gestalten schenll ein Testkonstrukt gebastelt.
Leider kann ich dies nicht als FileUpload ins Netz stellen. Es dürfen zwar Daten rein, aber keine Daten aus der Firma nach aussen gelangen. Wenn nicht, dann muss ich mal sehen das ich zu Haus nochmal machen. Ist vielleicht am einfachsten...?
Nur da ist auch kein Netzwerk *grübel*
ich habe jetzt den code in das Testmakro eingebaut und mit F8 wie geraten durch gespielt.
Private Sub Workbook_Open()
'Prüfen der verknüpften Dateien
Dim varItem, intIndex As Integer
Dim arrFiles(1 To 2) As String, strDatei As String, strVerzeichnis As String
Dim bolKorrekt As Boolean
'Verzeichnis der Dateien
Const strPfad As String = "G:\boninfo\VTest"
'Namen der verknüpften Dateien
arrFiles(1) = "1.xls"
arrFiles(2) = "2.xls"
'Prüfung ob Datei aus dem korrekten Verzeichnis geöffnet wurde
If LCase(Me.Path)  LCase(strPfad) Then
MsgBox "Bitte nur Datei """ & Me.Name & """ im Verzeichnis """ & strPfad _
& """ öffnen" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"
Me.Close savechanges:=False
Else
'Prüfen/Korrigieren der Verknüpfungen
For Each varItem In Me.LinkSources(Type:=xlExcelLinks)
strDatei = Mid(varItem, InStrRev(varItem, Application.PathSeparator) + 1)
strVerzeichnis = Left(varItem, InStrRev(varItem, Application.PathSeparator) - 1)
'Dateiname prüfen durch Vergleich mit Liste
bolKorrekt = False
For intIndex = 1 To 2
If LCase(strDatei) = LCase(arrFiles(intIndex)) Then
bolKorrekt = True
Exit For
End If
Next intIndex
If bolKorrekt = True Then
'Verzeichnisse vergleichen
If LCase(strPfad)  LCase(strVerzeichnis) Then
'Link korrigieren
Me.ChangeLink Name:=varItem, _
NewName:=strPfad & Application.PathSeparator & strDatei, Type:=xlExcelLinks
MsgBox "Falsche Verküpfung """ & varItem & """ wurde korrigiert"
End If
Else
MsgBox "Verknüpfung """ & varItem & " verweist auf inkorrekte Datei!" & vbLf & vbLf _
& "Bitte XYZ (Tel. 1234) informieren" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"
Me.Close savechanges:=False
End If
Next varItem
End If
End Sub

ich bleibe in folgender Zeile hängen:
For Each varItem In Me.LinkSources(Type:=xlExcelLinks)
Laufzeitfehler 13
Typen unverträglich
entferne ich diesen Teil probehalber:
'Prüfen/Korrigieren der Verknüpfungen
For Each varItem In Me.LinkSources(Type:=xlExcelLinks)
strDatei = Mid(varItem, InStrRev(varItem, Application.PathSeparator) + 1)
strVerzeichnis = Left(varItem, InStrRev(varItem, Application.PathSeparator) - 1)

kommt am Ende:
bei
Next
Fehler beim kompilieren
Next ohne For
Hier steh ich nun reichlich dumm da und weiß nicht so recht was das alles heißt bzw was ich machen kann damit ich die Testaufgaben 1 und 2 ausführen kann.
Übrigens hast du recht mit deiner Vermutung gehabt - der Absturz scheint dann bedingt durch das book_before_Close-Ereignismakro
Das Makro sagt speichern vor schließen :-)
Sorry das ich vergessen hab das anzugeben.
LG bassi

Anzeige
AW: Verknüpfungen
11.09.2012 08:26:02
bassi2008
...gott bin ich blöd...
der code ist in der falschen datei - der fehler sagt sicher aus das es gar keine verknüpfungen gibt...
*grummel*
sorry is wohl noch was früh heut... und noch keinen kaffee...
*grummel*
also umbasteln.
ich melde mich wieder...
lg bassi

AW: Verknüpfungen
11.09.2012 09:29:34
bassi2008
so. nun aber...
ich habe drei dateien. die drei greift auf zwei und eins via formel zu und weist dies auch unter bearbeiten verknüpfungen korrekt aus.
so sieht der code der arbeitsmappe nun aus:
Private Sub Workbook_Open()
'Prüfen der verknüpften Dateien
Dim varItem, intIndex As Integer
Dim arrFiles(1 To 2 ) As String, strDatei As String, strVerzeichnis As String
Dim bolKorrekt As Boolean
'Verzeichnis der Dateien
Const strPfad As String = "G:\boninfo\VTest"
'Namen der verknüpften Dateien
arrFiles(1) = "1.xls"
arrFiles(2) = "2.xls"
'Prüfung ob Datei aus dem korrekten Verzeichnis geöffnet wurde
If LCase(Me.Path)  LCase(strPfad) Then
MsgBox "Bitte nur Datei """ & Me.Name & """ im Verzeichnis """ & strPfad _
& """ öffnen" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"
Me.Close savechanges:=False
Else
'Prüfen/Korrigieren der Verknüpfungen
For Each varItem In Me.LinkSources(Type:=xlExcelLinks)
strDatei = Mid(varItem, InStrRev(varItem, Application.PathSeparator) + 1)
strVerzeichnis = Left(varItem, InStrRev(varItem, Application.PathSeparator) - 1)
'Dateiname prüfen durch Vergleich mit Liste
bolKorrekt = False
For intIndex = 1 To 2
If LCase(strDatei) = LCase(arrFiles(intIndex)) Then
bolKorrekt = True
Exit For
End If
Next intIndex
If bolKorrekt = True Then
'Verzeichnisse vergleichen
If LCase(strPfad)  LCase(strVerzeichnis) Then
'Link korrigieren
Me.ChangeLink Name:=varItem, _
NewName:=strPfad & Application.PathSeparator & strDatei, Type:=xlExcelLinks
MsgBox "Falsche Verküpfung """ & varItem & """ wurde korrigiert"
End If
Else
MsgBox "Verknüpfung """ & varItem & " verweist auf inkorrekte Datei!" & vbLf & vbLf _
& "Bitte XYZ (Tel. 1234) informieren" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"
Me.Close savechanges:=False
End If
End If
End Sub

beim durchlauf mit F8 funktioniert soweit alles, nur dass er die messagebox aufwirft das die datei inkorrekt ist und die datei anschließend geschlossen wird.
beim neustart funktioniert das auch insoweit, dass er sie nun entsprechend der message gleich wieder schließt...
MsgBox "Verknüpfung """ & varItem & " verweist auf inkorrekte Datei!" & vbLf & vbLf _
& "Bitte XYZ (Tel. 1234) informieren" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"

aber warum sollte die datei nio sein?
laufwerk stimmt
dateiname stimmt
verknüpfung stimmt
lg bassi

Anzeige
AW: Verknüpfungen
11.09.2012 11:27:54
fcs
Hallo bassi,
codemäßig bedeutet dies, dass der Ausdruck
LCase(strDatei) = LCase(arrFiles(intIndex))
nie wahr wird.
Gibt es da irgendwo einen Schreibfehler bei den Dateinamen - Dateinamenserweiterung (z.B.: xls/xlsx)?
Gruß
Franz

AW: Verknüpfungen
11.09.2012 11:02:15
fcs
Guten Morgen bassi,
der Typfehler tritt auf, wenn in der Datei selber keine Verküpfungen vorhanden sind.
Hier ist dann eine weitere Prüfung erforderlich, ob Verknüpfungen vorhanden oder du lässt die Prüfungen in den entsprechenden Dateien weg, so dass nur noch das Verzeichnis der sich öffnenden Datei geprüft wird.
Ich hab das Problem mit dem automatischen Schliessen ohne Speichern auch noch mal etwas untersucht. Man kann es mit einer zusätzlichen Variablen steuern.
Auch den Weg per Dialog "Speichern unter" kann man komplett blockieren.
Beim Testen ist mir dann auch aufgefallen, wie die falschen Links in eine Datei gelangen können.
Ich hatte im Code die Prüfung des Verzeichnisses der sich öffnenden Datei deaktiviert. Dann hab ich die Datei mit den Makros und die Dateien in die Formeln verknüpfen in ein falsches Verzeichnis kopiert.
Anschliessend hab ich die Datei mit den Makros geöffnet. Die Datei hatte jetzt nach dem Öffnen automatisch die Verknüpfungen auf die Dateien im falschen Verzeichnis, die das Makro dann korrigierte.
In eurem Fall vermute ich das die Probleme durch das Autowiederherstellen in Excel verursacht werden.
Wahrscheinlich stürzt Excel bei einem Anwender gelegentlich genau in dem Moment ab, in dem eine oder mehrere der Dateien geöffnet sind. Wenn die Autosicherung der Dateien (meist im lokalen Userverzeichnis) erfolgt ist, dann versucht Excel beim nächsten Start die geretteten Datein wieder herzustellen. Dabei können dann auch die Verknüpfungen auf den falschen Wert gesetzt werden. Wird dann die "gerettete" Datei im Netzlaufwerk gespeichert, dann ist das Malheur passiert.
In Excel 2010 kann man die Autospeicherung für einzelne Dateien abschalten-ich weiss aber nicht, ob dies ein akzeptabler Weg ist und ob diese Ein Datei-/oder Userspezifische Einstellung ist.
Die gestern vorgeschlagene Lösung zum Prüfen des "geöffnet"-Status einer Datei funktioniert übrigens gut. Ich hab es heute getestet.
In der Textdatei findest du meine neueste Variante für dein Makro inkl. Speichern- und Schliessen-Ereignismakros. Das Dateiverzeichnis wird jetzt zu Beginn des Moduls für alle Prozeduren als Konstante festgelegt.
https://www.herber.de/bbs/user/81793.txt
Gruß
Franz

AW: Verknüpfungen
11.09.2012 13:13:52
bassi2008
Hallo Franz,
schön dich zu lesen *grins*
ich habe deinen code jetzt ausprobiert mit der bekannten Konstellation 3 greift via Formel auf 1 und 2 zu.
Folgendes Ergebnis:
Verändere ich nichts bleibt alles ruhig. Datei öffnen schließen – alles ok.
• Ich lösche komplett 1 – Datei öffnen, schließen – keine Fehlermeldung – es fällt nicht auf das die Datei weg ist.
...wobei... das muss ich glaub ich nochmal prüfen, da hab ich mich bestimmt vertan, das ist doch nciht logisch, da muss doch auch die Excelmeldung kommen (wenn ich das folgende berücksichtige...) *grübel*
• Ich verschiebe 1 in einen anderen Ordner – Datei öffnen, schließen – es kommt die normale Excel Fehlermeldung – Arbeitsmappe enthält Verknüpfungen die nicht aktualisiert werden können mit den Optionen Weiter und Bearbeiten. Bei klick auf weiter passiert nichts sonst.
• Ich ändere den Dateinamen in der Formel – Datei öffnen, schließen – wieder die Excel Standard Fehlermeldung bezüglich fehlender Verknüpfung
• Ich ändere den Pfad in der Formel – Datei öffnen – es wieder die Excelfehlermeldung und nach klick auf weiter kommt dann die Messagebox das die Datei korrigiert wurde.
Es funktioniert tatsache – die Formel wurde auf den Pfad wieder zurück korrigiert.
Genial!
Jetzt müsste man nur noch die Standardfehlermeldung von Excel weg bekommen. So das der User keine Auswahl hat eventuell das falsche drücken zu können… dann wär dieser Teil – der wichtigste schlechthin – perfekt. Ich bin schwer begeistert.
Das Speichern unter – verhindern, funktioniert auch tadellos.
Du sagst, dass dieses Formel ändern von Excel mit dem Autospeichern zusammen hängt – die Erklärung macht Sinn die zu angibst. Das scheint mir sehr logisch.
Jetzt muss ich mal gucken wie ich das mal soweit testweise in die Originaldateien einbauen kann… und was dann passiert… ich bin sehr gespannt.
LG bassi

AW: Verknüpfungen
12.09.2012 11:10:32
bassi2008
Hallo Franz,
heut nun der Test im Original… Respektive in der Kopie des Originals…
Der Aufbau entspricht der gestrigen Testversion. Nur hier heißen die Dateien P1 und WZ Stammdaten.
Folgendes passiert:
• P1 löschen: Excel Fehlermeldung – Weiter – nichts passiert mehr (des nachfolgende Makro funktioniert natürlich dann nicht, da die Datei ja fehlt)
irgendwas fehlt hier noch... hier müsste eigentlich auch die MessageBox kommen das die Datei bzw der Aufbau fehlerhaft ist und eine Nachricht an mich erfolgen sollte?!
• In der Formel den Pfad ändern: Excel Fehlermeldung – Weiter – MessageBox – Ok klicken – Formel ist korrigiert – Datei funktioniert tadellos - echt super
• In der Formel den Dateinamen ändern: MessageBox Datei inkorrekt – Ok klicken – Datei schließt sich – jetzt kommt die Excel Fehlermeldung – Weiter – nichts passiert mehr (Datei ist ja schon geschlossen)
Hier müsste nur noch die Excel Fehlermeldung am Ende noch verhindert werden - sonst super
Bei Neustart der Datei dasselbe Bild. MessageBox, Datei schließt sich…
• Speichern unter – MessageBox – Ok – funktioniert prima
Was mir auffiel – die F8 Funktion lässt sich nur in dem Bereich Sub Workbook Open durchführen. Ist das so? Bzw soll das so sein?
Ich habe mich auch gleich mal an das Problem mit der „schon geöffneten Datei“ gemacht. Hab den Link den du mir geschickt hast geprüft und den Code mit eingebaut.
Leider funktioniert das bei mir nicht so schön.
In dem Text steht der Hinweis, dass der Code nicht bei gesperrten Arbeitsblättern funktioniert. Dies konnte ich nicht testen – bis dahin bin ich nicht gekommen. Beim F8 durchlauf bleibt er in der Zeile
#If Not VBA6 Then
Hängen. Dort kommt die Fehlermeldung – Laufzeitfehler `6`: Überlauf
Ich hab die Stelle im Code markiert.
Was will das mir sagen? Was kann ich da tun?
Ich habe den kompletten Code mal unten angehangen – vielleicht hab ich ja was vermasselt beim basteln? Kannst du bitte mal drüber schauen?
LG bassi
Option Explicit
'Makro unter "DieseArbeitsmappe" in den Dateien mit Verknüpfungen
Private bolCloseAutomatic As Boolean 'Variable zur Steuerung des Speicherns vor dem Schliessen
' Verzeichnis der Dateien
Private Const strPfad As String = "G:\boninfo\VTest"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If bolCloseAutomatic = True Then Exit Sub 'Bei Problemen mit den Verküpfungen _
oder Speicherort wird Datei ohne Speichern geschlossen
'Immer speichern vor dem schliessen - ggf. weitere Aktionen
Me.Save
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
MsgBox "Diese Datei " & vbLf & _
Me.FullName & vbLf & _
"darf nicht per ""Speichern unter"" - Dialog gespeichert werden!", _
vbInformation + vbOKOnly, "Hinweis - Speichern unter"
Cancel = True
Else
If LCase(Me.Path)  LCase(strPfad) Then
'Durch die Prüfung des Pfads beim Öffnen der Datei sollte dieser Weg _
eigentlich nicht vorkommen
Cancel = True
bolCloseAutomatic = True
MsgBox "Diese Datei darf nur gespeichert werden, wenn sie sich im Verzeichnis" _
& vbLf & strPfad & vbLf & "befindet!" & vbLf & vbLf _
& "Aktuelles Verzeichnis der Datei:" & vbLf _
& Me.Path & vbLf & vbLf _
& "Bitte Datei schliessen oder normal Speichern!", _
vbInformation + vbOKOnly, "Prüfung Dateiverzeichnis"
End If
End If
End Sub

Private Sub Workbook_Open()
'Prüfen der verknüpften Dateien
Dim varItem, intIndex As Integer
Dim arrFiles(1 To 2) As String, strDatei As String, strVerzeichnis As String
Dim bolKorrekt As Boolean
'Namen der verknüpften Dateien
arrFiles(1) = "P1.xls"
arrFiles(2) = "WZ Stammdaten.xls"
'Prüfung ob Datei aus dem korrekten Verzeichnis geöffnet wurde
If LCase(Me.Path)  LCase(strPfad) Then
MsgBox "Bitte nur Datei """ & Me.Name & """ im Verzeichnis """ & strPfad _
& """ öffnen" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"
bolCloseAutomatic = True
Me.Close savechanges:=False
Else
'Prüfen/Korrigieren der Verknüpfungen
varItem = Me.LinkSources(Type:=xlExcelLinks) 'Wert=Leer wenn keine Verknüpfungen vorhanden
If IsEmpty(varItem) Then
MsgBox "Keine Formeln mit Verküpfungen vorhanden in der Datei " & vbLf & Me.FullName, _
vbInformation + vbOKOnly, "Prüfung Verknüpfungen"
Else
For Each varItem In Me.LinkSources(Type:=xlExcelLinks)
strDatei = Mid(varItem, InStrRev(varItem, Application.PathSeparator) + 1)
strVerzeichnis = Left(varItem, InStrRev(varItem, Application.PathSeparator) - 1)
'Dateiname prüfen durch Vergleich mit Liste
bolKorrekt = False
For intIndex = 1 To 2
If LCase(strDatei) = LCase(arrFiles(intIndex)) Then
bolKorrekt = True
Exit For
End If
Next intIndex
If bolKorrekt = True Then
'Verzeichnisse vergleichen
If LCase(strPfad)  LCase(strVerzeichnis) Then
'Link korrigieren
Me.ChangeLink Name:=varItem, _
NewName:=strPfad & Application.PathSeparator & strDatei, Type:=xlExcelLinks
MsgBox "Falsche Verküpfung """ & varItem & """ wurde korrigiert"
End If
Else
MsgBox "Verknüpfung """ & varItem & " verweist auf inkorrekte Datei!" & vbLf & vbLf _
& "Bitte XYZ (Tel. 1234) informieren" & vbLf & vbLf _
& "Datei wird automatisch wieder geschlossen!"
bolCloseAutomatic = True
Me.Close savechanges:=False
End If
Next varItem
End If
End If
End Sub
Private Sub TestVBA()
'// Just change the file to test here
Const strFileToOpen As String = "G:\boninfo\VTest\WZ Stammdaten.xls"
If IsFileOpen(strFileToOpen) Then
MsgBox strFileToOpen & " is already Open" & _
vbCrLf & "By " & LastUser(strFileToOpen), vbInformation, "File in Use"
Else
MsgBox strFileToOpen & " is not open", vbInformation
End If
End Sub

Private Function IsFileOpen(strFullPathFileName As String) As Boolean
'// VBA version to check if File is Open
Dim hdlFile As Long
'// Error is generated if you try
'// opening a File for ReadWrite lock >> MUST BE OPEN!
On Error GoTo FileIsOpen:
hdlFile = FreeFile
Open strFullPathFileName For Random Access Read Write Lock Read Write As hdlFile
IsFileOpen = False
Close hdlFile
Exit Function
FileIsOpen:
'// Someone has it open!
IsFileOpen = True
Close hdlFile
End Function

Private Function LastUser(strPath As String) As String
Dim strXl As String
Dim strFlag1 As String, strflag2 As String
Dim i As Integer, j As Integer
Dim hdlFile As Long
Dim lNameLen As Byte
strFlag1 = Chr(0) & Chr(0)
strflag2 = Chr(32) & Chr(32)
hdlFile = FreeFile
Open strPath For Binary As #hdlFile
strXl = Space(LOF(hdlFile))
Get 1, , strXl
Close #hdlFile
j = InStr(1, strXl, strflag2)
'hier stopt das
#If Not VBA6 Then
'// Xl97
For i = j - 1 To 1 Step -1
If Mid(strXl, i, 1) = Chr(0) Then Exit For
Next
i = i + 1
#Else
'// Xl2000+
i = InStrRev(strXl, strFlag1, j) + Len(strFlag1)
#End If
'// IFM
lNameLen = Asc(Mid(strXl, i - 3, 1))
LastUser = Mid(strXl, i, lNameLen)
End Function

AW: Verknüpfungen
12.09.2012 13:44:42
fcs
Hallo bassi,
Folgendes passiert:
• P1 löschen: Excel Fehlermeldung – Weiter – nichts passiert mehr (des nachfolgende Makro funktioniert natürlich dann nicht, da die Datei ja fehlt)
irgendwas fehlt hier noch..

Fehlende Dateien in deinem Projekt-Ordner waren bisher kein Thema, das ist ein neuer Asspekt kann aber durch entsprechende Prüfungen mit Dir korrigiert werden.
siehe hier: https://www.herber.de/bbs/user/81809.txt
Was mir auffiel – die F8 Funktion lässt sich nur in dem Bereich Sub Workbook Open durchführen. Ist das so? Bzw soll das so sein?
F8 = schrittweise abarbeiten/weiterarbeiten von Makros, Im VBA-Editor kann man nur Subs/Functions per F8 auch starten. Die meisten Ereignismakros lassen sich nicht Starten - Workbook_Open ist eine der wenigen Ausnahmen.
Prüfen des "Geöffnet-Status":
Ich hatte dir ja den Code-Teil kopiert mit dem man das Prüfen kann.
Der "LastUser" nützt dir ja nichts, du brauchst den User der die Datei im Moment geöffnet hat. Die Funktion liefert bei mir auch Fehler (zumindest bei einer Excel2010er-Datei) wenn auch an anderer Position.
Nachfolgend nochmals so wie ich es machen würde.
Gruß
Franz

'Diese Function in einem allgemeinen Modul der Datei anlegen - dann kann sie _
beliebig im VBA-Projekt aufgerufen werden.
Public Function IsFileOpen(ByRef Path As String) As Boolean
'Funktion prüft, ob eine Datei geöffnet ist.
Dim FileNr As Integer
Dim ErrorNr As Long
'open file for testing
On Error Resume Next
FileNr = FreeFile
Open Path For Input Lock Write As #FileNr
ErrorNr = Err.Number
Close #FileNr
On Error GoTo 0
If ErrorNr  0 Then
IsFileOpen = True
End If
Err.Clear
End Function
'Der Aufruf zum Prüfen einer Datei auf den Geöffnet-Status kann beliebig in _
Prozeduren des VBA-Projekts stehen
Sub aaTest_Speichern()
Dim strFile As String
strFile = ThisWorkbook.Path & "\" & "WZ Stammdaten.xls" 'zu prüfende Pfad + Datei
If IsFileOpen(strFile) = True Then
MsgBox "Die Datei " & vbLf & strFile & vbLf _
& " ist zur Zeit geöffnet. Bitte später nochmals probieren!", _
vbInformation, "Daten speichern"
Else
'MsgBox zum Testen
MsgBox "Die Datei " & vbLf & strFile & vbLf _
& " ist zur Zeit nicht geöffnet. " & vbLf & vbLf & "OK = Speichern!", _
vbInformation, "Daten speichern"
'Daten speichern
End If
End Sub


AW: Verknüpfungen
12.09.2012 19:45:37
bassi2008
Guten Abend Franz,
ich konnt's nicht lassen, es kribbelte zu sehr in den Fingern, ich musste nochmal ein bisschen mit dem Code rumexceln. Morgen werde ich auf Arbeit wohl kaum dazu kommen. Ich hoffe ich schaffe es wenigstens ihn noch in meine Test Dateien einzubauen.
Franz du hast du Recht. Die fehlende Datei war bisher noch kein Thema.
Aber in meinem laienhaften Leichtsinn nahm ich an das der Code welcher die inkorrekte Datei ausfindig macht, auch dann - oder gerade dann anspricht, wenn die Datei ganz fehlt. Aber das war offensichtlich ein Denkfehler.
Der Tipp mit der F8 Funktion gefällt mir ausgezeichnet. Dass mir der nach den ganzen Jahren Excelleidenschaft entgangen ist ärgert mich richtig.
Ich habe nun zu Haus ein Testkonstrukt gebastelt und könnte mir ein Loch in den Bauch freuen. Es funktioniert alles tadellos. Ich bin gespannt was das Netzwerk dazu sagt.
Wenn das ok ist würd ich dich gern noch etwas fragen was ich ganz am Anfang kurz angerissen hatte:
Die Aktualisierung einer Verknüpfung welche ich via Makro mit diesem Code versucht habe zu erreichen:
Private Sub Workbook_Activate()
Application.ScreenUpdating = True
Application.AskToUpdateLinks = False
Application.ScreenUpdating = True
End Sub
scheint nicht so recht so zu funktionieren wie ich es angedacht hatte.
Wenn sich die Stammdaten oder die Daten von P1 verändern (es handelt sich um reine Zahlenwerte – keine Formelabhängigkeiten welche z.b. über die Zeit berechnet würden), erscheint in der Hauptansicht die Änderung nicht über diesen Code, geschweige denn von allein, sondern erst wenn ich die Verknüpften Dateien wirklich öffne.
Ist es tatsache so, dass man diese Werte nur über das öffnen der anderen Datei aktualisieren kann?
Ich habe dazu einen Beitrag mit einer Antwort von Dir gefunden wo es um zweifache Verknüpfungen geht:
https://www.herber.de/forum/archiv/1164to1168/t1165430.htm#1165480
In deiner Antwort schreibst du folgendes:
„Ideal wäre, wenn alle Abteilungsdateien in einem Verzeichnis liegen und DIR-Funktion gefunden werden. Dann kann das in einer einfachen Schleife abgearbeitet werden“

Leider reagierte der Fragesteller hierauf nicht mehr.
Könnte ich diese Form für meinen Zweck benutzen? Und wenn ja – wie könnte ich das anstellen?
Ich wünsche Dir noch einen schönen Abend.
LG bassi

AW: Verknüpfungen
06.09.2012 15:42:27
Rudi
Hallo,
Verknüpfungen werden in Excel relativ gespeichert.
Deshalb solltest du alle Dateien in einem Ordner speichern. Den kannst du dann verschieben, wohin du willst.
Gruß
Rudi

AW: Verknüpfungen
06.09.2012 16:00:59
bassi2008
Hallo Rudi,
auch dir besten Dank für deine Antwort.
Aber auch hier muss ich passen. Alle Dateien liegen in ein und dem selben Ordner auf G.
:-(
LG bassi

AW: Verknüpfungen
06.09.2012 16:13:09
bassi2008
Hallo Rudi,
auch dir Dank für deine Antwort.
Leider muss ich aber auch hier passen. Alle Dateien liegen komplett in ein und demselben Ordner auf G.
Daran kanns nicht liegen :-(
LG bassi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige