Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Externe Verknüpfungen

Betrifft: Externe Verknüpfungen von: Johann
Geschrieben am: 26.04.2008 12:22:14

Hallo Excel-Könner!

Ich habe externe Verknüpfungen, die nicht beim Öffnen, sondern nur bei Bedarf mittels Makro aktualisiert werden sollen.
Dabei ist die Quelldatei geschlossen.

Ich habe "Bearbeiten-Verknüpfungen-Eingabeaufforderung beim Start" auf "Keine Warnung anzeigen und Verknüpfungen nicht aktualisieren" gestellt.

Mit
"ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources"
kann ich zwar aktualisieren, es erscheint aber immer das Explorerfenster zum Auswählen/Ändern der Quelldatei (die Datei ist vorhanden).

Wie kann ich per VBA die Daten aktualisiern und das Explorerfenster nur anzeigen lassen, wenn die Quelldatei nicht bekannt ist?

Herzlichsten Dank im Voraus
Johann

  

Betrifft: AW: Externe Verknüpfungen von: Bernd
Geschrieben am: 26.04.2008 12:39:49

Hallo Johann,
ich kenne das Problem auch, das tritt aber nur auf, wenn sich irgend etwas in der Linkadresse geändert hat, und sei es nur ein zusätzliches Leerzeichen.

Bist du >> absolut << sicher, nichts an der Linkadresse oder dem Ordner, wo die Daten liegen, geändert zu haben???

Grüße
Bernd


  

Betrifft: Nix verändert von: Johann
Geschrieben am: 26.04.2008 13:00:52

Hallo Bernd!

Ich habe das jetzt so an die 10 mal versucht: Quelldatei nicht verändert - Zieldatei neu geöffnet - Daten aktualisiert - gespeichert und geschlossen - neu geöffnet ..... Dabei ist es mir ein Mal geglückt.
Die manuelle Aktualisierung über "Bearbeiten - Verknüpfungen - " geht immer ohne Nachfrage.

Gibt es da vielleicht noch eine andere Möglichkeit ?

Schöne Grüße
Johann


  

Betrifft: AW: Verknüpfungen einzeln aktualisieren von: Erich G.
Geschrieben am: 26.04.2008 16:01:10

Hallo Johann,
vielleicht ist nur eine oder ein Teil deiner Quellmappen betroffen und du kannst mit diesem Code
die Schuldige(n) herausfinden:

Sub aTst()
   Dim aLinks, ii As Integer
   aLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
   If Not IsEmpty(aLinks) Then
      For ii = 1 To UBound(aLinks)
         MsgBox "Aktualisiere " & aLinks(ii)
         ActiveWorkbook.UpdateLink Name:=aLinks(ii)
      Next ii
   End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Verknüpfungen einzeln aktualisieren von: Johann
Geschrieben am: 26.04.2008 16:18:22

Jawohl Erich!

Du hast den Nagel auf den Kopf getroffen. Bei der manuellen Aktualisierung kann man sich ja die Quelldatei aussuchen, die aktualisiert werden soll.

Mit VBA werden immer alle Verknüpfungen aktualisiert. Wenn ich die Verknüpfungen auf die 2. Datenquelle wegnehme, funktioniert's.

Gibt es in VBA nicht auch die Möglichkeit, nur eine bestimmte Quelle zu aktualisieren?

Herzlichen Dank und schöne Grüße aus dem Weinviertel
Johann


  

Betrifft: AW: Verknüpfungen einzeln aktualisieren von: Johann
Geschrieben am: 26.04.2008 16:33:23

Hallo Erich!

Die Antwort auf deinen ersten Vorschlag s. oben.

Bleibt noch die Frage:
Gibt es in VBA nicht auch die Möglichkeit, nur eine bestimmte Quelle zu aktualisieren?

Herzlichen Dank und schöne Grüße aus dem Weinviertel
Johann


  

Betrifft: AW: Verknüpfungen einzeln aktualisieren von: Erich G.
Geschrieben am: 26.04.2008 18:02:51

Hi Johann,
hast du dir die Routine mal genau angesehen?
Mit "ActiveWorkbook.UpdateLink Name:=aLinks(ii)"
werden - innerhalb einer Schleife - die Daten aus jeder Quelldatei einzeln aktualisiert.

Mit
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources(xlExcelLinks)(1)
werden nur die Daten aus der 1. Quelldatei aktualisiert, mit
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources(xlExcelLinks)(2)
die Daten Daten aus der 2. Quelldatei usw.

Wenn dir das zu unübersichtlich ist, kannst du das auch so machen:

Sub aTst()
   Dim aLinks, ii As Integer
   aLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
   If Not IsEmpty(aLinks) Then
      MsgBox "Aktualisiere " & aLinks(1)
      ActiveWorkbook.UpdateLink Name:=aLinks(1)
   End If
End Sub

oder das Ganze z. B. mit (2) statt (1)

Da ich die Namen deiner Quellmappen natürlich nicht kenne, habe ich sie mit LinkSources() ermittelt.

Du kannst auch ganz einfach per Makroaufzeichnung eine Prozedur erstellen,
die die Verknüpfungen zu einer bestimmten Quellmappe aktualisieren lässt.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Nix verändert von: Erich G.
Geschrieben am: 26.04.2008 16:04:38

Hi Johann,
noch eine Möglichkeit: Probier mal

Bearbeiten - Verknüpfungen - Status prüfen

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Nix verändert von: Johann
Geschrieben am: 26.04.2008 17:02:38

Text:
Hallo Erich!

Die Antwort auf deinen ersten Vorschlag s. oben.

Bleibt noch die Frage:
Gibt es in VBA nicht auch die Möglichkeit, nur eine bestimmte Quelle zu aktualisieren?

Herzlichen Dank und schöne Grüße aus dem Weinviertel
Johann




 

Beiträge aus den Excel-Beispielen zum Thema "Externe Verknüpfungen"