Makro/VBA zur Aktualisierung Tabelle

Hallo Wissende,

ich öffne eine Tabelle schreibgeschützt. Diese Tabelle bleibt den ganzen Tag geöffnet am Bildschirm. In der Zwischenzeit können aber anderswo Änderungen an der Tabelle durchgeführt werden.

Ich möchte in der Tabelle einen Button haben „Aktualisierung“ der die Tabelle mit dem neusten Stand wieder öffnet.

Ich kann ja kein Makro aufzeichnen das die Tabelle schliesst und dann wieder öffnet. Ist so etwas mit VBA zu realisieren. Ich weiss das Makros auch VBA ist. Ich kenne mich aber mit der Syntax nicht wirklich aus.
Bin für jeden Tip dankbar.

Robert

Sorry Excel 2000/2003
.

geht nicht
bzw nur mit umwegen…

Hallo Robert,

wenn Du die Tabelle schliesst, dann endet damit auch das Makro (zumindest soweit ich weiss, habs aber nur im Aufzeichnungsmodus probiert).
Deswegen kann man danach Excel nicht mehr anweisen die Datei neu zu öffnen.
Einzige Möglichkeit, die ich sehe ist, dass man die Datei erst unter einem temporären Namen speichert, dann die Datei mit der Tabelle öffnet und erst im Anschluss die temporäre Datei schliesst.

Dabei bleibt aber dann immer eine temporäre Datei bestehen…

Grüße
Munich

Hallo Robert,

was Du vorhast geht mit folgendem Zeitmakro

Sub Zeitmakro()
ThisWorkbook.Worksheets(„Tabelle1“).Range(„A1“) = Format(Time, „hh:mm:ss“)
DaEt = Now + TimeValue(„00:00:01“)
Application.OnTime DaEt, „Zeitmakro“
End Sub

Es ist eigentlich eine Uhr für Excel, aber wenn man hier statt(„00:00:01“)1 Sekunde z.B. („00:30:00“)30 Minuten einträgt wird die Arbeitsmappe alle 30 Min. aktualisiert, ausgelöst durch das Uhrenmakro.
Natürlich musst Du in eine Zelle Deiner Wahl die Uhrzeit eintragen und entsprechend formatieren (im Makro oben A1).

Gruß
Wolfgang

Hallo Munich,

geht doch mit einem kleinen Trick Uhrenmakro.

Gruß Wolfgang

Ich möchte in der Tabelle einen Button haben „Aktualisierung“
der die Tabelle mit dem neusten Stand wieder öffnet.

Hallo Robert,

zeichne ein Makro auf, wähle dabei Speicherung in Persönlicher Arbeitsmappe aus. Dann mache irgendwas, kopier A1 nach b1 und beende die Aufzeichnung.
Nun hast du eine personl.xls angelegt. Alt+F11, links siehst du die personl.xls, untendrunter muß Modul1 stehen, wenn nicht auf das Pluszeichen vor personl.xls klicken.
Dann Doppelklick auf Modul1.

Im Fenster siehst du dein aufgezeichnetes Makro, lösche es und ersetze es durch

Sub Aktuell()
On Error Resume Next
Workbooks(„xyzabc.xls“).Close savechanges:=False
Workbooks.Open Filename:=„C:\test\xyzabc.xls“
End Sub

Ändere in den beiden Zeilen den Dateinamen und Pfad.
Klicke ganz oben links auf Datei—presonl.xls speichern, schließe den Vb-Eitor.

In Excel Rechtsklick oben rechts neben das Fragezeichen, Anpassen auswählen, Befehle—Makros, das Symbol für „Schaltflächeanpassen“ „ziehst“ du nach oben in die Menüleiste, es erscheint dann dort.
Nun Rechtsklick auf das Symbol, Makro—zuweisen das Makro „Aktuell“ zuweisen.

Gruß
Reinhard

Hallo Reinhard,

erst mal an dich und alle anderen Vielen Dank für die Tips.
Ich habe es ganauso gemacht wie beschrieben. Wenn ich allerdings auf
die Schaltfläche klicke passiert garnichts.

Ich habe das Makro auch mal direkt in der Arbeitsmappe erstellt
und auf eine Schaltfläche gelegt. Leider mit dem gleichen Erfolg.
Wenn ich das VBA richtig lese soller die Tabelle schliessen ohne zu speichern und dann gleich neu öffnen. Das müsste man doch eigentlich mitbekommen.

So sieht mein etwas abgeändertes Makro aus:

Sub Aktualisieren()
On Error Resume Next
Workbooks(„N:\Verwaltung\Renning\Bestandsverwaltung.xls“).Close savechanges:=False
Workbooks.Open Filename:=„N:\Verwaltung\Renning\Bestandsverwaltung.xls“
End Sub

Ist da etwas falsch ?

Robert

zeichne ein Makro auf, wähle dabei Speicherung in Persönlicher
Arbeitsmappe aus. Dann mache irgendwas, kopier A1 nach b1 und
beende die Aufzeichnung.
Nun hast du eine personl.xls angelegt. Alt+F11, links siehst
du die personl.xls, untendrunter muß Modul1 stehen, wenn nicht
auf das Pluszeichen vor personl.xls klicken.
Dann Doppelklick auf Modul1.

Im Fenster siehst du dein aufgezeichnetes Makro, lösche es und
ersetze es durch

Sub Aktuell()
On Error Resume Next
Workbooks(„xyzabc.xls“).Close savechanges:=False
Workbooks.Open Filename:=„C:\test\xyzabc.xls“
End Sub

Ändere in den beiden Zeilen den Dateinamen und Pfad.
Klicke ganz oben links auf Datei—presonl.xls speichern,
schließe den Vb-Eitor.

In Excel Rechtsklick oben rechts neben das Fragezeichen,
Anpassen auswählen, Befehle—Makros, das Symbol für
„Schaltflächeanpassen“ „ziehst“ du nach oben in die
Menüleiste, es erscheint dann dort.
Nun Rechtsklick auf das Symbol, Makro—zuweisen das Makro
„Aktuell“ zuweisen.

Gruß
Reinhard

Hallo Robert,

Ich habe es ganauso gemacht wie beschrieben. Wenn ich
allerdings auf
die Schaltfläche klicke passiert garnichts.

probiers mal so:

Sub Aktualisieren()
On Error Resume Next
Workbooks(„Bestandsverwaltung.xls“).Close savechanges:=False
Workbooks.Open Filename:=„N:\Verwaltung\Renning\Bestandsverwaltung.xls“
End Sub

Gruß
Reinhard

1 „Gefällt mir“

Hallo Reinhard,

probiers mal so:

Sub Aktualisieren()
On Error Resume Next
Workbooks(„Bestandsverwaltung.xls“).Close savechanges:=False
Workbooks.Open
Filename:=„N:\Verwaltung\Renning\Bestandsverwaltung.xls“
End Sub

Leider das gleiche. Keine Reaktion

Gruß
Reinhard

Hallo Reinhard,

das muss wohl daran liegen das die Tabelle im Netzwerk liegt.
Wenn ich das Makro für eine lokale Tabelle anwende funktioniert
es einwandfrei.

Robert

das muss wohl daran liegen das die Tabelle im Netzwerk liegt.
Wenn ich das Makro für eine lokale Tabelle anwende
funktioniert
es einwandfrei.

Hallo Robert.

ich hatte es ja getestet, also grundsätzlich klappt es.
Aber ich hab ja nur meinen PC, kein Netzwerk.
Kann da also nix testen.
Ich kann dir also nicht weiterhelfen, vielleicht weiß Thomas da was.

Was du machen könntest, zeichne mal ein Makro auf in deiner personl.xls während du eine Mappe schließt und sie dann wieder öffnest und zeige hier den entstandenen Code.
Vielleicht bringt das Erkenntnisse, die weiterführen.

Prinzipiell müßte ein Makro was du startest im Rahmen deiner erteilten Rechte in einem Netzwerk alles machen können was du auch manuell machen kannst.
Das ist aber kein Wissen sondern nur meine unbestätigte Annahme.

Gruß
Reinhard

1 „Gefällt mir“

Hallo Reinhard,

Was du machen könntest, zeichne mal ein Makro auf in deiner
personl.xls während du eine Mappe schließt und sie dann wieder
öffnest und zeige hier den entstandenen Code.
Vielleicht bringt das Erkenntnisse, die weiterführen.

Das ist eine gute Idee. Das werde ich mal testen und den (Miss)Erfolg hier mitteilen.

Prinzipiell müßte ein Makro was du startest im Rahmen deiner
erteilten Rechte in einem Netzwerk alles machen können was du
auch manuell machen kannst.
Das ist aber kein Wissen sondern nur meine unbestätigte
Annahme.

Da gebe ich dir Recht. Es ist ja im Prinzip nur ein anderes Laufwerk.

Vielen Dank erst einmal für deine Bemühungen

Gruß
Robert

Hallo Reinhard,

hat alles nicht so wirlich etwas gebracht. Die Syntax ist auch dabei ähnlich wie in deinem Makro.

Kannst Du mir bitte sagen wie die Syntax ist wenn ich Excel beenden möchte

Also wie Datei/Beenden/speichern nein

Gruß
Robert

Hallo Robert,

hat alles nicht so wirlich etwas gebracht. Die Syntax ist auch
dabei ähnlich wie in deinem Makro.

zeige trotzdem mal den genauen Code.

Kannst Du mir bitte sagen wie die Syntax ist wenn ich Excel
beenden möchte
Also wie Datei/Beenden/speichern nein

Sub nn()
ActiveWorkbook.Saved = True
Application.Quit
End Sub
'
Sub nn2()
Dim wkb As Workbook
For Each wkb In Workbooks
 wkb.Saved = True
Next wkb
Application.Quit
End Sub

Gruß
Reinhard

Hallo Reinhard,

ich benutze jetzt diesen Code. Damit können die Anwender die Tabelle inklusive Excel mit einem Klick schliessen und müssen die Tabelle dann erneut öffnen um den aktuellen Stand zu laden.

Sub Aktualisieren()
On Error Resume Next
ActiveWorkbook.Close savechanges:=False
Application.Quit
End Sub

Bei diesem folgenden Makro von Wolfgang ist es so: Wenn ich auf Datei schliessen gehe und die Tabelle schliesse öffnet er mir die Tabelle sofort erneut. Und das in einer Endlosschleife.Zu dem habe ich die aktuelle Uhrzeit in der Zelle A1

Sub Zeitmakro()
ThisWorkbook.Worksheets(„Tabelle1“).Range(„A1“) = Format(Time, „hh:mm:ss“)
DaEt = Now + TimeValue(„00:00:01“)
Application.OnTime DaEt, „Zeitmakro“
End Sub

Das war das Makro das etwas anders als dein Vorschlag war aber auchnicht funktionierte. Nur die Zeile 3 war etwas anders.

zeige trotzdem mal den genauen Code.

Sub Aktualisieren()
On Error Resume Next
ActiveWorkbook.Close savechanges:=False
Workbooks.Open Filename:=„N:\Verwaltung\Renning\Bestandsverwaltung.xls“
End Sub

hallo Robert,

Endlosschleife.Zu dem habe ich die aktuelle Uhrzeit in der
Zelle A1

dann lösche
ThisWorkbook.Worksheets(„Tabelle1“).Range(„A1“) = Format(Time,„hh:mm:ss“)

zeige trotzdem mal den genauen Code.

Nein, ich möchte den Code sehen wenn du wie von mir gesagt ein Makro aufzeichnest.

Gruß
Reinhard