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
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