3.9k Aufrufe
Gefragt in Tabellenkalkulation von peters Mitglied (460 Punkte)
Moin, Moin!

Ich habe Verknüpfungen zu externen Daten in meiner Arbeitsmappe.

Beim Öffnen selbiger kommt stets ein Dialogfenster mit der Abfrage, ob diese denn aktualisiert werden wollen oder eben nicht.

Kann ich dieses irgendwie umgehen und standardmäßig aktualisieren?

Gruß

Peter

11 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

kopiere den folgenden Code in das VBA-Projekt der betreffenden Arbeitsmappe:

Private Sub Workbook_Open()
Application.AskToUpdateLinks = False    'nicht nach Aktualisierung der Verknüpfungen fragen
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources    'Verknüpfungen aktualisieren
End Sub

Gruß

M.O.

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Mo,

danke, das funzt soweit.

Aber:
Nach Aufruf dieser so modifizierten Datei fragt Excel gar nicht mehr nach Aktualisierungen, auch bei Dateien, die nicht so modifiziert sind. Das scheint also eine allgemeingültige und dauerhafte "Abschaltung" zu sein?
Selbst nach Beenden von Excel fragt das Programm nicht mehr nach bei einer nicht (!) so modifizierten Datei.

Allerdings sind meine Versuche gescheitert, die erste Codezeile wieder auf .true zu setzen.
Sowohl, wenn ich den Befehl nach den beiden von Dir genannten Zeilen setz, als auch als Befehl before_close bekomme ich dann wiederum die Frage nach der Aktualisierung.

Hast Du da noch eine Idee?

Grüße

Peter
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

ops, da hatte ich vergessen, die Nachfrage wieder einzuschalten:

Private Sub Workbook_Open()
Application.AskToUpdateLinks = False    'nicht nach Aktualisierung der Verknüpfungen fragen
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources    'Verknüpfungen aktualisieren
Application.AskToUpdateLinks = True    'nach Aktualisierung der Verknüpfungen fragen

End Sub

Bei mir kommt eine Benachrichtigung, dass die automatische Aktualisierung von Links deaktiviert wurde (gelbes Band). Schau mal, ob das auch dir kommt und klicke auf aktivieren. Dann kommt auch wieder die Nachfrage, ob die Verknüpfungen aktualisert werden sollen (nachdem der verbesserte Code ausgeführt wurde).

Gruß

M.O.

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Mo,

Das setzen von

Application.AskToUpdateLinks = True

hatte ich mir ja bereits gedacht und probiert; wie in meiner Antwort beschrieben.

Ich hatte dann den Effekt, dass ich dann doch wieder gefragt wurde, ob ich aktualisieren möchte.
Dabei spielte es auch keine Rolle, ob ich das direkt im Anschluss, wie von Dir vorgeschlagen, oder vor dem Schließen der Mappe einsetzte.

Grüße

Peters
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Peter,

irgendwie habe ich keine Ahnung, was du eigentlich willst.

Der zuletzt gepostete Code schaltet die Aktualisierungsabfrage in der jeweiligen Mappe ab, aktualisert die Bezüge und schaltet die Frage wieder an.

Erst schreibst du, dass beim ersten geposteten Code die Aktualisierungsabfrage global ausgeschaltet wird und du bei anderen Dateien nicht mehr gefragt wirst, ob du aktualisieren willst und dann beschwerst du dich, dass wieder nach dem Aktualisieren gefragt wird.

Ich hatte das Workbook-Open-Ereignis genutzt, da normalerweise ja beim Öffnen der Datei die Verknüpfungen aktualisiert werden.

Erkläre doch mal bitte genau, was du erreichen willst.

Gruß

M.O.
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Mo,

ganz einfach:  Es funktioniert so nicht!

Der Einfachheit halber sprechen ich bei Deinem Code von Zeile 1, 2 und 3:

Mit Zeile 3: Ich bekomme trotzdem das Dialogfenster, ob ich aktualisierren möchte. Egal wie oft ich es teste, Excel beende oder nicht - es kommt immer wieder die Abfrage.

Ohne Zeile 3: Ich bekomme die Abfrage nur beim 1. Start. Danach kann ich so oft starten wie ich will, auch nach Beenden von Excel - ich bekomme keine Abfrage mehr. Auch dann nicht, wenn ich sie gerne hätte in einer anderen Datei.

Besser bekomme ich es nicht ausgedrückt, sorry.

Gruß

Peter
0 Punkte
Beantwortet von
Hallo Peter

Das Object ist Excel bezogen nicht Mappen bezogen!

Die Vorschläge von MO wären der richtige Weg!!

Bei Experimenten sollte das Object vor dem schliessen von Excel wieder auf True gesetzt werden!

Gruß Nighty
0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo Nighty,

ich dachte mir das schon, dass das Excel-bezogen ist.

Was ich allerdings nicht verstehe ist, wenn ich das Objekt auf False setze und dann die Aktualisierungszeile laufen habe, funktioniert es: keine Rückfrage!

Setze ich das Objekt auf False, führe in der nächsten Zeile die Aktualisierung durch und erst danach wird das Objekt wieder auf True gesetzt: Wie kann es dann sein, dass ich dann wiederum diese depperte Abfrage bekomme?!

Das ist ja exakt die Reihenfolge von Mo und ich habe das auch genau so in mein Profekt kopiert.

Gruß

Peter
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

da hast du leider recht sad. Das Problem ist, dass das Makro erst nach der Abfrage, ob die Daten aktualisiert werden sollen, ausgeführt wird.

Du kannst aber über das Menüband Daten - Verknüpfungen bearbeiten - Eingabeaufforderung beim Start festlegen, dass z.B. die Verknüpfungen automatisch ohne Nachfrage aktualisiert werden. Das gilt dann für diese Verknüpfung in dieser Arbeitsmappe.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo MO  und Peter

Dann wurde das Versionsabhängig geändert!

Dein Vorschlag ist eine Jahrelange vorgehendsweise und im Netz Tausendfach bestätigt.

Fazit für Moderatoren!

Eine Einarbeitung von neueren Versionen wäre offenbar hilfreich!

Gruß Nighty
...