Microsoft Excel

Herbers Excel/VBA-Archiv

Alle Dateien aktualisieren!

Betrifft: Alle Dateien aktualisieren! von: Roman
Geschrieben am: 14.10.2007 22:58:14

Hallo,

habe ein Problem. Folgendes: Habe drei Excel Dateien die untereinander verknüpft sind.

D.h. in Datei [1] werden Die Daten eingegeben.
Die Zellen von Datei [1] sind mit Datei [2] verknüpft.
In Datei [2] werden über mehrere KWs der Monatsabschluss berechnet.
Die errechneten Daten die in den KW Tabellen stehen werden dann verknüpft in Datei [3]
In Datei [3] ist nun eine Mappe die alle Monatsabschlüsse auflistet.

Hat das jemand verstanden? - hoffentlich....

Wenn nun Daten in der Datei [1] eingegeben werden dann aktualisiert Excel nicht über [2] zu [3].
Excel macht das nur wenn alle Dateien [1] & [2] geöffnet wurden. Da es sich aber um 48 Dateien
im Netzwerk handelt, ist ein öffnen unmöglich!

Gibt es eine Möglichkeit Excel per VB alle verknüpften Dateien zu aktualisieren ohne Sie zu öffnen?

Habe schon das Netz durchsucht un die Tipps probiert - aber alles ohne Erfolg.
Excel / Einstellungen / Berechnungen / Automatisch (F9)
ActiveWorkbook.UpdateLinks....

Wer kann helfen?

Gruß Roman

  

Betrifft: AW: Alle Dateien aktualisieren! von: Josef Ehrensberger
Geschrieben am: 14.10.2007 23:06:11

Hallo Roman,

ohne öffnen geht's meiner Meinung nach nicht.


Gruß Sepp



  

Betrifft: AW: Alle Dateien aktualisieren! von: Klaus K.
Geschrieben am: 14.10.2007 23:16:29

Hi,
ich suche selber schon seit geraumer Zeit nach einer passenden Lösung. Aber ohne Öffnen geht es auf gar keinen Fall. Denn Excel ist ein Tabellenkalkulationsprogramm und keine Datenbank.
Wenn es sehr kleine Exceldateien sind, sollte ein Öffnen mittels VBA-Code über ein schnelles Netzwerk kein grösseres Problem sein. Aber wenn die alle schon mehrere MB gross sind, sehe eher schwarz.
Du könntest allerdings über Excel mittels ADO oder DAO auf zentrale Access-Datenbanken zugreifen.

Gruss
Klaus


  

Betrifft: AW: Alle Dateien aktualisieren! von: fcs
Geschrieben am: 14.10.2007 23:17:55

Hallo Roman,

mir ist kein weg bekannt, Verknüpfungen zu aktualisieren, ohne die Dateien zu öffnen.

Es sollte aber möglich sein, die Aktualiserungen per VBA in 2 Schleifen abzuarbeiten.

Nachdem die Dateneingabe in den Dateien[1] abgeschlossen ist, kannst du in einer Schleife die Dateien[2] öffnen, die Links aktualiseren, die Datei neu berechnen, die Datei speichern und wieder schließendie Datei.

Anschließend machst du das gleiche mit den Dateien[3].

Die entsprechende Prozedur erstellst du am besten in einer separaten Datei.
Gruß
Franz


  

Betrifft: Hier mal ein Ansatz von: Josef Ehrensberger
Geschrieben am: 14.10.2007 23:33:01

Hallo Roman,

ein Ansatz, wie man das lösen könnte. Der Code gehört in die Datei [3].

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub UpdateAllLinks()
Dim res As Long

On Error Resume Next
Application.ScreenUpdating = False

With ThisWorkbook
    
    res = upLink(.LinkSources)
    
    If res <> 0 Then .UpdateLink Name:=.LinkSources
    
End With

Application.ScreenUpdating = True

End Sub


Private Function upLink(lSource As Variant) As Long
Dim objWB As Workbook
Dim intC As Integer, res As Long

If Not IsEmpty(lSource) Then
    For intC = 1 To UBound(lSource)
        Set objWB = Workbooks.Open(lSource(intC))
        upLink (objWB.LinkSources)
        If res <> 0 Then objWB.UpdateLink Name:=objWB.LinkSources
        objWB.Close True
    Next
    upLink = -1
End If

End Function



Gruß Sepp



  

Betrifft: kleines Update von: Josef Ehrensberger
Geschrieben am: 14.10.2007 23:43:49

Hallo nochmal,

in der Funktion war noch ein Fehler.

Private Function upLink(lSource As Variant) As Long
Dim objWB As Workbook
Dim intC As Integer, res As Long

If Not IsEmpty(lSource) Then
    For intC = 1 To UBound(lSource)
        Set objWB = Workbooks.Open(lSource(intC))
        res = upLink(objWB.LinkSources)
        If res <> 0 Then objWB.UpdateLink Name:=objWB.LinkSources
        objWB.Close True
    Next
    upLink = -1
End If

End Function



Gruß Sepp



  

Betrifft: AW: Hier mal ein Ansatz von: Roman
Geschrieben am: 17.10.2007 17:39:50

Danke für Eure Hilfe erstmal.

Sepp kannst Du mir mal kurz erklären was Dein Code macht?

Ich habe mal zum Testen ein Macro geschrieben das alle 23 Dateien öffnet, speichert und wieder schließt.
Nur das Problem ist das die Dateien auf dem Server sind und ich nicht ausschließen kann das eine oder
mehrere Dateien geöffnet sind.

Sepp, ist mit deinem Code das Problem auch zu umgehen?

Gruß Roman


  

Betrifft: AW: Hier mal ein Ansatz von: Josef Ehrensberger
Geschrieben am: 17.10.2007 18:26:36

Hallo Roman,

Probleme sollten geöffnete Dateien nicht bereiten. Wenn der User der die Datei gerade bearbeitet nicht gespeichert hat, dann erhälst du allerdings den Wert der nach der letzten Speicherung enthalten war. Ggf. erhälst du, nachdem der User die Datei geschlossen hat, eine Info das die Datei zur Verfügung steht.


Gruß Sepp



  

Betrifft: AW: Hier mal ein Ansatz von: Roman
Geschrieben am: 17.10.2007 18:44:30

Sepp, werde es probieren am Wochenende.



Gruß Roman


 

Beiträge aus den Excel-Beispielen zum Thema "Alle Dateien aktualisieren!"