Refresh von externen Daten

Hallo Excel-Freunde,
da ich externe Verknüpfungen oft und sicher aktualisieren muss, brauche ich einen besseren Code dafür, als den untenstehenden. Die Anweisung „ActiveWorkbook.RefreshAll“ wird manchmal ausgeführt und manchmal eben nur für eines der beteiligten Blätter :frowning:
Wenn das schon nicht automatisch zu aktualisieren ist, so sollte das doch per Schaltfläche hinzubekommen sein (?).
Vielen Dank für Euer Interesse und besonders für passende Tips :smile:
Freundliche Grüße
Thomas

Sub update()
ActiveWorkbook.RefreshAll
 Sheets(„Stückliste_BT“).[J1] = FileDateTime(„C:_Thomas\INVENTOR_Projekte\Bilfinger Gerber 4\2D abgeleitete Zeichnungen\export_BT.xls“)
 Sheets(„Stückliste_strukt“).[K1] = FileDateTime(„C:_Thomas\INVENTOR_Projekte\Bilfinger Gerber 4\2D abgeleitete Zeichnungen\export_strukt.xls“)End Sub

Hallo Thomas,

da ich externe Verknüpfungen oft und sicher aktualisieren
muss, brauche ich einen besseren Code dafür, als den
untenstehenden.

ist der Code von dir, da wird doch die A1-Schreibweise benutzt *wunder*
*grins*

Zur Sache, bin grad verunsichert.
Verknüpfung ist für mich u.a. so eine Zellformel:
=Tabelle2!A1
in einer Zelle von Tabelle1. Derart kann man sich auch auf eine Zelle in einer fremden Mappe und dort in einem Blatt beziehen was im Pseudocode so aussehen kann
=Pfad—Mappenname—Blattname—Zellenname.

Das soll mit .RefreshAll aktualisiert werden können? Ist das so?
Bei Refresh denke ich da eher an richtig externe Daten wie eine Webabfrage in einem Blatt. Und nicht an so „normale“ Verknüpfungen.
Kannst du oder jmd. mir netterweise verklickern was denn Refresh(-All) so aktualisiert. Die Excelhilfe ist mir da nicht eindeutig genug.

Die Anweisung „ActiveWorkbook.RefreshAll“ wird
manchmal ausgeführt und manchmal eben nur für eines der
beteiligten Blätter :frowning:

Woher weißt du das bzw. wie findest du das heraus?
Sind das vllt. PTs und EnableRefresh ist auf False?

Wenn das schon nicht automatisch zu aktualisieren ist, so
sollte das doch per Schaltfläche hinzubekommen sein (?).

? Wie meinst du das denn. Ist doch wurscht ob du per Schaltfläche Code mit RefreshAll aufrufst oder ob dieser Code automatisch gestartet wird.

Gruß
Reinhard

Hallo Reinhard,
danke für Dein Interesse.
Zu Deinen Fragen:

ist der Code von dir, da wird doch die A1-Schreibweise benutzt
*wunder*
*grins*

Nein aus dem Internet weggefunden :wink:
Bei so einfachen Codes lasse ich das zum Testen in dieser …-Schreibweise solange ich keine Gehirnkrämpfe bekomme, weil es z. B. Bezüge zur Zelle links über der aktiven gibt :-S

Zur Sache, bin grad verunsichert.

Geht mir auch so…

Verknüpfung ist für mich u.a. so eine Zellformel:
=Tabelle2!A1
in einer Zelle von Tabelle1. Derart kann man sich auch auf
eine Zelle in einer fremden Mappe und dort in einem Blatt
beziehen was im Pseudocode so aussehen kann
=Pfad—Mappenname—Blattname—Zellenname.

Ja, es geht um eine Quelldatei auf meiner Festplatte.

Das soll mit .RefreshAll aktualisiert werden können? Ist das
so?

Klingt für mich jedenfalls danach. Habe auch andere Möglichkeiten ausprobiert, z. B.
Daten – Verknüpfungen bearbeiten – Werte aktualisieren
oder
Doppelklick in jede zu aktualisierende Zelle
Funktioniert beides, ist mir nur zu umständlich.
Zu Anfang hatte ich noch geglaubt, dass die Formel reicht und automatisch die richtigen Werte annimmt :-S
Momentan öffne ich die Quelldateien kurz per Makro und schließe sie wieder.

Bei Refresh denke ich da eher an richtig externe Daten wie
eine Webabfrage in einem Blatt. Und nicht an so „normale“
Verknüpfungen.

Eben. Deshalb glaube ich ja auch mittlerweile, dass mit der Datei irgendwas nicht stimmt oder der PC ´ne Pause braucht. Werde ihn gleich ´mal neu starten - wirkt ja manchmal Wunder.

Kannst du oder jmd. mir netterweise verklickern was denn
Refresh(-All) so aktualisiert. Die Excelhilfe ist mir da nicht
eindeutig genug.

An meiner Fundstelle
http://www.herber.de/forum/archiv/296to300/297229_Ex…
steht auch nur ´was von „ausprobieren“

Die Anweisung „ActiveWorkbook.RefreshAll“ wird
manchmal ausgeführt und manchmal eben nur für eines der
beteiligten Blätter :frowning:

Woher weißt du das bzw. wie findest du das heraus?

Indem ich die Quelldateien ändere…

Sind das vllt. PTs und EnableRefresh ist auf False?

Was sind PTs? Wo ist EnableRefresh zu finden?

Wenn das schon nicht automatisch zu aktualisieren ist, so
sollte das doch per Schaltfläche hinzubekommen sein (?).

? Wie meinst du das denn. Ist doch wurscht ob du per
Schaltfläche Code mit RefreshAll aufrufst oder ob dieser Code
automatisch gestartet wird.

Naja, automatisch wäre schon schöner. Ich hatte gedacht, dass es sogar ohne Einstellungen immer geht. Wenn irgendwo eine Option falsch steht, wäre das der nächste Ansatzpunkt. Wenn es denn ein Code sein muss, kriege ich den auch noch automatisch gestartet :smile: Er sollte dann aber auch zuverlässig arbeiten. Das Testen ist auch schon aufwändig genug. Dabei habe ich dann gemerkt, dass ein Blatt aktualisiert wurde, das andere aber nicht. Das frustriert.

Komischerweise führt auch der folgende Code nicht dazu, dass die Haken beim Blattschutz gesetzt werden, deshalb mein Misstrauen gegen den Rechner oder die Datei:
Public Sub Custom_Protect()
On Error Resume Next
With CommandBars.ActionControl
If Not ActiveSheet.ProtectContents Then
’ Application.Dialogs(xlDialogProtectDocument).Show
’ ActiveSheet.Protect

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingHyperlinks:=True, AllowSorting:= _
True, AllowFiltering:=True

.Caption = „Un&amp:stuck_out_tongue_winking_eye:rotect Sheet…“
ElseIf ActiveSheet.ProtectContents Then
ActiveSheet.Unprotect
If Err.Number 0 Then
MsgBox „Wrong Password ! - Try again“, vbCritical, „Unprotecting Sheet“
Err.Clear
Exit Sub
End If
If Not ActiveSheet.ProtectContents Then
.Caption = „&amp:stuck_out_tongue_winking_eye:rotect Sheet…“
MsgBox „You have unprotected the Sheet.“ & vbCr & _
„Be careful you don’t mess up the sheet layout!“, vbExclamation
End If
End If
End With
Call GrundAusrichtung
End Sub

Ich melde mich gleich, ob der Neustart ´was gebracht hat.

Freundliche Grüße
Thomas

Hallo Reinhard,
nach Neustart hat die Aktualisierung nun geklappt - auf beiden Blättern.
Zufall? Wenn Dir oder einem Anderen keine Möglichkeit der automatischen Prüfung einfällt, aktiviere ich sicherheitshalber lieber wieder die Datei-Öffnen-und Schließen-Routine.
Das automatische Einstellen der Optionen für die Blatt-Sperrung hat immer noch nicht funktioniert. Aber vielleicht habe ich auch ´was übersehen im Code ( den hatte ich nur missbraucht per Schaltfläche, eigentlich sollte er auch automatisch über ein künstliches Ereignis gestartet werden --> siehe 12 Beiträge vorher.
Momentan klappt bei mir nicht so viel. Ich mache erst´mal Feierabend für heute.
Vielen Dank für Deine Hilfe und beste Grüße
Thomas

… mehr auf http://w-w-w.ms/a4f43z

Hallo Thomas,

sorry, habe deine Beitragsfolge aus denn augen verloren.

Verknüpfung ist für mich u.a. so eine Zellformel:
=Tabelle2!A1
in einer Zelle von Tabelle1. Derart kann man sich auch auf
eine Zelle in einer fremden Mappe und dort in einem Blatt
beziehen was im Pseudocode so aussehen kann
=Pfad—Mappenname—Blattname—Zellenname.

Ja, es geht um eine Quelldatei auf meiner Festplatte.

Okay.

Das soll mit .RefreshAll aktualisiert werden können? Ist das
so?

Klingt für mich jedenfalls danach.

Ach, du weißt das genau sowenig wie ich. Mir ist RefreshAll nicht geläufig = seltenst bis noch nie benutzt. Und die Vba-Hilfe sagte diesbezüglichts eindeutiges was ich verstand.

Habe auch andere
Möglichkeiten ausprobiert, z. B.
Daten – Verknüpfungen bearbeiten – Werte aktualisieren
Funktioniert beides, ist mir nur zu umständlich.

Aha, müßte man mal Makro aufzeichenen dabei, may be im Code taucht RefreshAll auf.

Momentan öffne ich die Quelldateien kurz per Makro und
schließe sie wieder.

Kannst du oder jmd. mir netterweise verklickern was denn
Refresh(-All) so aktualisiert. Die Excelhilfe ist mir da nicht
eindeutig genug.

An meiner Fundstelle
http://www.herber.de/forum/archiv/296to300/297229_Ex…
steht auch nur ´was von „ausprobieren“

Okay, Link schaue ich später an.

Die Anweisung „ActiveWorkbook.RefreshAll“ wird
manchmal ausgeführt und manchmal eben nur für eines der
beteiligten Blätter :frowning:

Woher weißt du das bzw. wie findest du das heraus?

Indem ich die Quelldateien ändere…

Aha, du hast in einer Mappe zwei Verknüpfungen, einmal zu MappeA, einmal zu mappeB.
Du schließt die mappe, änderst nacheinander in MappeA und MappeB Werte. Schließt beide, öffnest die mappe und führst RefreshAll durch und NUR die Werte aus mappeB wurden erfrischt, nicht die aus MappeA, ist das so?

Sind das vllt. PTs und EnableRefresh ist auf False?

Was sind PTs? Wo ist EnableRefresh zu finden?

Sorry, PT = PivotTable.
EnableRefresh fand ich in der Vba Hilfe bei der Recherche zu RefreshAll.
Scheinbar kann man bei/in einer PT EnableRefresh auf False setzen dann kriegt sie keine Erfrischungstücher gereicht bei RefreshAll *gg*

Naja, automatisch wäre schon schöner. Ich hatte gedacht, dass
es sogar ohne Einstellungen immer geht. Wenn irgendwo eine
Option falsch steht, wäre das der nächste Ansatzpunkt.

Okay.

Komischerweise führt auch der folgende Code nicht dazu, dass
die Haken beim Blattschutz gesetzt werden,

Gehört das zum RefreshAll? Ich glaub nicht, vllt. besser du machst daraus eine neue Anfrage hier. Wenn dein Dateisystem, dein Excel 'ne Macke hat könnte das natürlich zusammenhängen.

Ich konzentriere mich jetzt erstmal auf refreshing. D.h. ich bau das nach mit Verknüpfungen. Und teste…

Gruß
Reinhard

Hallo Reinhard,

sorry, habe deine Beitragsfolge aus denn augen verloren.

Ist ja nicht schlimm. Ich komme ja auch mit der Lösung zurecht, die ich mir gebastelt habe ( ganz unten ). Auch kann ich ja nicht erwarten, dass Du immer jedes Problem für mich löst :-S

Aha, müßte man mal Makro aufzeichenen dabei, may be im Code
taucht RefreshAll auf.

Sub Makro2() 'Daten – alle aktualisieren
ActiveWorkbook.RefreshAll
End Sub

Momentan öffne ich die Quelldateien kurz per Makro und
schließe sie wieder.

siehe Code ganz unten

Aha, du hast in einer Mappe zwei Verknüpfungen, einmal zu
MappeA, einmal zu mappeB.
Du schließt die mappe, änderst nacheinander in MappeA und
MappeB Werte. Schließt beide, öffnest die mappe und führst
RefreshAll durch und NUR die Werte aus mappeB wurden
erfrischt, nicht die aus MappeA, ist das so?

Ganz genau. Hätte ich besser und ausführlicher beschreiben sollen…

PT = PivotTable.

Habe ich noch nie benutzt. Daran kann es also kaum liegen.

Komischerweise führt auch der folgende Code nicht dazu, dass
die Haken beim Blattschutz gesetzt werden,

Gehört das zum RefreshAll? Ich glaub nicht, vllt. besser du
machst daraus eine neue Anfrage hier. Wenn dein Dateisystem,
dein Excel 'ne Macke hat könnte das natürlich zusammenhängen.

Okay, das kann immer noch sein, dass da ´was grundsätzlich vermurkst ist. Ich bekomme beispielsweise jedes erste mal, wenn ich nach dem Start von Excel das Menü „Datei“ aufrufe, folgende Fehlermeldung:
„Laufzeitfehler bei benutzerdefinierter Oberfläche in Autodesk Vault Addin for Office 2010
Fehler beim Aufrufen der Rückruffunktion: „LoadImage“
OK – Alle OK“
Wenn ich dann „Alle OK“ bestätige, kommt die Fehlermeldung nicht wieder.

Dies schreibe ich gleich in einen neuen Thread…

Ich konzentriere mich jetzt erstmal auf refreshing. D.h. ich
bau das nach mit Verknüpfungen. Und teste…

Vielleicht reagiert da Dein Excel ganz anders, weil Dein System nicht so durcheinander ist…
Mache Dir aber bitte keinen Stress damit!

Sub Makro1()
'Daten – Verknüpfungen bearbeiten – Werte aktualisieren
Sheets(„export_BT“).Select
ActiveWorkbook.UpdateLink Name:= _
„C:_Thomas\INVENTOR_Projekte\Bilfinger Gerber 4\2D abgeleitete Zeichnungen\export_BT.xls“ _
, Type:=xlExcelLinks
ActiveWorkbook.UpdateLink Name:= _
„C:_Thomas\INVENTOR_Projekte\Bilfinger Gerber 4\2D abgeleitete Zeichnungen\export_strukt.xls“ _
, Type:=xlExcelLinks
End Sub

Was funktioniert ( zumindest habe ich keine „Aussetzer“ bemerkt ):
Sub update()
Workbooks.Open Filename:=„C:_Thomas\INVENTOR_Projekte\Bilfinger Gerber 4\2D abgeleitete Zeichnungen\export_BT.xls“
Workbooks.Open Filename:=„C:_Thomas\INVENTOR_Projekte\Bilfinger Gerber 4\2D abgeleitete Zeichnungen\export_strukt.xls“
ActiveWorkbook.RefreshAll
Workbooks(„export_BT.xls“).Close savechanges:=False
Workbooks(„export_strukt.xls“).Close savechanges:=False

Sheets(„Stückliste_BT“).[J1] = FileDateTime(„C:_Thomas\INVENTOR_Projekte\Bilfinger Gerber 4\2D abgeleitete Zeichnungen\export_BT.xls“)
Sheets(„Stückliste_strukt“).[K1] = FileDateTime(„C:_Thomas\INVENTOR_Projekte\Bilfinger Gerber 4\2D abgeleitete Zeichnungen\export_strukt.xls“)
End Sub

Herzliche Grüße und vielen Dank
Thomas

Blattschutz-Problem
Hallo Reinhard,
den Fehler beim Start von Office-Programmen ( Excel:smiley:atei-Menü ) habe ich ins Office-Brett eingestellt.
Das Makro zum Blattschutz ist aber nicht betroffen: Es läuft, wenn ich es auf das Wesentliche reduziere. Da muss wohl in den übrigen Zeilen irgend´was falsch laufen. Habe den Code aber bisher noch nicht ganz verstanden.
Eventuell frage ich dann später noch einmal in einer neuen Anfrage hier ( obwohl das echt nervt, dass jedes mal 10 Experten per email aufgeschreckt werden ).
Einen schönen Abend wünscht
Thomas