Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA ändern
#1
Hallo Leute, 
ich nutze mehrere Tabellenblätter die ich innerhalb des jeweiligen Tabellenblattes speichern möchte.
Jetzt kann ich mir 37 Codes erstellen, was aber in meinen Augen Unsinn ist. Wie müsste es lauten wenn ich anstatt ("Inhaltsverzeichniss") alle speichern möchte 
Soll heißen einen Button für alle Tabellenblätter.
Danke Gruß Phoeni

Sub Speichern()
    Dim WB As Workbook, TB As Worksheet
 
    Set WB = Workbooks("2Keyword-Mappe Excel.xlsm")
    Set TB = WB.Sheets("Inhaltsverzeichniss")
 
    TB.Range("A1").Select
    ' Datei Speichern
 
    WB.Save
 
End Sub
Antworten Top
#2
Moin Phoeni,
sorry, aber ich verstehe aus Deiner Beschreibung bisher fast nur Bahnhof.

Stimmt wenigstens das: Du hast 37 Tabellen und willst in Tabelle 38 ein Inhaltsverzeichnis erstellen/aktualisieren? Die Aktualisierung erfolgt über Formel-Bezüge?

Dann die Frage: Warum speicherst Du nicht einfach das komplette Workbook z.B. bei einem Workbook-SheetChange-Event? zu finden in DieseArbeitsmappe. So brauchst Du noch nicht mal einen Button.

Grüße

d`r Bastler von den VBAsteleien.de
Win 10 & 11, Office 2019 & 2021 & macOS X.15, XL 2019
Antworten Top
#3
Hallo Bastler,
1.) Ja, Stimmt wenigstens das: Du hast 37 Tabellen (Blätter) und willst in Tabelle 38 ein Inhaltsverzeichnis erstellen/aktualisieren?
2.) Warum speicherst Du nicht einfach das komplette Workbook z.B. bei einem Workbook-SheetChange-Event?- würde heißen, sowie ich eine Veränderung in einer Zelle getätigt habe, würde sich die Tabelle von selbst speichern?? 

Da ich zu oft, zwischen Tabellenblätter arbeite, erschien mir meine Lösung am einfachsten. 
Also ich wollte in jedem Tabellenblatt ein Button zum Speichern haben, mit deinem Vorschlag habe ich mich noch nie auseinander gesetzt.
Gruß Phoeni
Antworten Top
#4
Moin Phoeni,

was Du nicht beantwortet hast: Die Aktualisierungen Richtung Inhaltsverzechnis sind Formel-basiert? Ich nehme jetzt mal an JA

Nicht jeder Zellenwechsel/Neueintrag muss gleich zu Speichern des Workbooks führen. Welchen Event / Anlass / Auslöser / Trigger Du dazu benutzt, ist eigentlich egal. Da gibt es die verschiedensten Möglichkeiten - von Rechtsklick, Doppelklick, Zellenwechsel, Arbeitsblattwechsel bis hin zur Zeit-Steuerung (alle x Sekunden). Du löst damit einfach ThisWorkbook.Save aus. Um dabei Abfragen wie Soll gespeichert werden? o.Ä. zu vermeiden, hilft Application.DisplayAlerts = False

Wenn Du damit noch nicht umgehen kannst, baue ich Dir eine Beispieltabelle. Lass wissen!

Grüße

d`r Bastler von den VBAsteleien.de
Win 10 & 11, Office 2019 & 2021 & macOS X.15, XL 2019
Antworten Top
#5
Hallo Bastler, ja denn würde ich sagen, mit links klick. 
was Du nicht beantwortet hast: Die Aktualisierungen Richtung Inhaltsverzechnis sind Formel-basiert? Ich nehme jetzt mal an JA
Denke mal Ja, bisher habe ich nur auf Speichern geklickt, die Datei liegt in der Wolke
Danke Gruß Phoeni
Antworten Top
#6
Welche Wolke?
XL@Office.com kann keine Makros nicht. Auf dem Cloud-Auge bin ich blind, weil ich nur lokal arbeite. Aber ...

Deine Wolke kann Makros? 
Dann weiter im Text ... Mein Vorschlag: Löse die Speichern-Aktion entweder über einen Doppelklick, den Wechsel von Sheet to Sheet  (mein Favorit für Dich) oder den Rechtsklick aus. Der Linksklick reagiert schon auf den ersten Besuch einer Zelle. Es muss ja nicht jedes Komma zum Speichern führen.

Grüße und Gute Nacht

d`r Bastler von den VBAsteleien.de
Win 10 & 11, Office 2019 & 2021 & macOS X.15, XL 2019
Antworten Top
#7
Hallo, andere Wolke, nur zum Speichern. Ich lade sie doch nur von dort, ist doch nix anderes als vom Server.
Ok,  (mein Favorit für Dich) och vertrau dir da mal. Was ich heute bei mir festgestellt habe, das ich die selbe Datei als sicherung an einem anderen Ort (Wolke -> anderer Ordner) Speicher, lässt sich sowas automatisieren?
DANKE! 
Gruß Phoeni
Antworten Top
#8
Moin Phoeni,
nahezu alles, was Du in XL händisch machst, lässt sich automatisieren. Speichern an verschiedenen Orten ist da eine der leichteren Übungen, an die du Dich sogar als Einsteiger wagen kannst. 

Versuche zur Übung mal Folgendes:
  • Erstelle eine neue Mappe "Test_Speichern_Zwei_Ordner.xlsm" Der Dateityp ist wichtig. 
  • Fülle die ersten zwei Zellen mit Strg+. (Punkt) und Strg+:(Doppelpunkt).
  • Falls in Deinem Menüband noch keine Entwicklertools zu finden sind gehe über Datei > Optionen > Menüband anpassen zum DropDown Befehle auswählen und füge die Entwicklertools zu Deinem Menüband hinzu.
  • Links oben in den Entwicklertools findest Du Makro aufzeichnen > anklicken. Ab jetzt werden alle Aktionen in der Tabelle aufgezeichnet.
  • Speichere diese neue Tabelle auf Deinem Desktop.
  • Beende die Aufzeichnung. Du wirst nach einem Makronamen und einer Tastenkombination gefragt. Nenn das Ding Test_Speichern_Zwei_Ordner und ordne ihm Strg+t zu.

Damit hast Du eine erste Code-Grundlage geschaffen, auf der Du jetzt Deine Anpassungen vornehmen kannst.
  • Öffne mit Alt+F11 den VBA-Editor und im linken oberen Fenster Module > Modul1. Dort findet Du Code, der etwa so aussehen sollte:
Code:
Sub Test_Speichern_Zwei_Ordner()
'
' Test_Speichern_Zwei_Ordner Makro
'
' Tastenkombination: Strg+t
'
    ChDir "C:\Users\phoeni\Desktop"
    ActiveWorkbook.SaveAs Filename:="C:\Users\hbri\Desktop\Test_Phoeni.xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
Die Zeilen 2-6 sind Kommentare (erkennbar am führenden Hochkomma), die Du einfach löschen kannst. Jetzt besteht Dein Makro noch aus zwei Befehlen und ihren Argumenten: ChDir... und ActiveWorkbook.SaveAs...
Jetzt geht es darum, dieses wortreiche XL-Gebrabbel so einzudampfen, dass es übersichtlich wird und Du es variabel nutzen kannst. Mit
Code:
Dim sFileName As String
sFileName = Cells(1, 3)
in Zeile 2 und 3 des Makros definierst Du die Variable sFilename und füllst sie mit dem Inhalt der Zelle Zeile 1/Spalte 3 (=C3).
  • Die Zeile ChDir kannst Du löschen, sie wird nicht mehr gebraucht. Das Zielverzeichnis gibst Du in der Variablen mit.
  • Auch die Argumente im ActiveWorkbook.SaveAs kannst Du auf Filename:= reduzieren und durch die Variable sFileName füllen
Jetzt sollte Dein Makro so aussehen:
Code:
Sub Test_Speichern_Zwei_Ordner()
Dim sFileName As String

sFileName = Cells(1, 3)
ActiveWorkbook.SaveAs Filename:=sFileName

End Sub

Um in den zweiten Ordner zu speichern, lässt Du das Makro den Job einfach ein zweites Mal mit einer neu gefüllten Variable sFilename tun: Du kopierst die Zeilen 3+4, fügst sie unterhalb ein und änderst den Wert für sFileName in z.B. Cells(1,4).

Jetzt müssen in den beiden Zellen nur noch korrekte Pfad- und Dateinamen stehen und Du hast Deine Datei mit STRG+t an zwei Orten gespeichert.

Um das Ganze wirklich universell und fehlersicher zu schreiben, fehlen jetzt noch ein paar Kleinigkeiten. Der Makrorecorder zeichnet viel auf, was man nicht braucht. Andere wichtige Details, wie z.B. Bezüge zum Arbeitsblatt, Vermeidung unnötiger Dialoge oder Fehlerbehandlung muss man dann schon selbst einfügen.

Viel Erfolg

d`r Bastler von den VBAsteleien.de
Win 10 & 11, Office 2019 & 2021 & macOS X.15, XL 2019
Antworten Top
#9
Hallo Bastler
Undecided 22
genügt das??

Erstmal Danke, schaue es mir gleich mal an.
Gruß Phoeni
Antworten Top
#10
Hallöchen,

ohne VBA geht's auch

Tabellenblaetter-Uebersicht
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste