Makro zum speichern

Moderator: ModerationP

Makro zum speichern

Beitragvon balubaer » 28. Sep 2021, 16:08

Hallöchen.
Eine frage: Ich habe für eine tabelle das folgendes makro zum speichern der tabelle in "Diese Arbeitsmappe" :

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.Saved = False Then
Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?", vbYesNoCancel + vbInformation)
Case vbYes
ActiveWorkbook.Save
Case vbNo
Me.Saved = True
Case vbCancel
'Dein Code
Cancel = True
End Select
End If
End Sub

Das makro spricht meiner ansicht nach nur die dazugehörige tabelle an.
Ich möchte jetzt das dieses makro auch auf andere tabellen angewenden werden kann, ohne das ich das makro in die anderen tabellen kopieren muss.
geht das?
danke im voraus
Dummheit ist, wer verfrisst, was nicht zu versaufen ist. :P :P
Benutzeravatar
balubaer
Neuling
 
Beiträge: 2
Registriert: 28. Sep 2021, 15:59
Wohnort: Köln

Re: Makro zum speichern

Beitragvon 1Matthias » 28. Sep 2021, 17:16

Moin!
Also der Code speichert (bzw. speichert nicht) deine Arbeitsmappe. Das sind alle Tabellen in der Datei. Also die Reiter unten. Das ist nicht auf einzelne der Tabellen bezogen sondern das gesamte Paket.
VG
1Matthias
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 963
Registriert: 15. Aug 2017, 18:36

Re: Makro zum speichern

Beitragvon HKindler » 28. Sep 2021, 18:13

Hi,

mal ganz davon abgesehen, dass ActiveWorkbook hier auch mal die falsche Datei sein kann: Was soll denn die Routine Bitteschön bezwecken? Wenn eine Datei noch nicht gespeichert ist, dann frag doch Excel beim Schließen von selbst nach, ob man nicht vorher noch speichern will!
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6294
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: Makro zum speichern

Beitragvon Gast » 29. Sep 2021, 11:36

Guten morgen Helmut.
Danke für deine Rückmeldung
Ich habe das makro deswegen am laufen, weil ich seit geraumer zeit seltsame probleme mit dem Speichern jeder excel tabelle habe. Das Dialogfenster beim beenden wenn die Abfrage ob gespeichert werden soll oder nicht wird in einer viel zu grossen grösse angezeigt. Das Dialogfenster wird fast doppelt so gross angezeigt wie normal.
Warum, keine Ahnung.
Ich habe schon in mehreren Foren deswegen angefragt, und keiner konnte mir deswegen helfen. Deshalb das makro. Damit funktioniert das Speichern wunderbar.
Ich wollte jetzt dieses makro auf andere Excel tabellen anwenden, ohne das ich das makro in jeder tabelle eintragen muss. Die anderen makros die ich habe, habe ich schon in eine "Personal.xlsb" datei verschoben, und damit funktioniert eigentlich alles, nur die makros die in "diese Arbeitsmappe" stehen werden nicht angewendet.
Gibt es dafür eine Lösung??
Gast
 

Re: Makro zum speichern

Beitragvon HKindler » 29. Sep 2021, 12:44

Hi,

Events wie Workbook_Close oder Worksheet_Activate beziehen sich grundsätzlich immer auf das Element, in dem sie stehen. Also nützt es nichts, dies in der Personal.xlsb zu programmieren. Aber genau so, wie es in DieseArbeitsmappe auch Events wie z.B. Workbook_SheetChange gibt, die bei einem Change in jedem Sheet des Workbooks anspringen, gibt es auch ein Application_WorkbookBeforeClose, das dann bei jedem Workbook anspringt. Zumindest laut Beschreibung auf https://docs.microsoft.com/de-de/office/vba/api/excel.application.workbookbeforeclose Allerdings braucht man wohl auch einige Vorbereitung dafür. Auf genannter Seite findet man unter "Beispiele" einen Link dazu ("Using events with the Application object").

Ich habe das noch nie selbst ausprobiert und kann deshalb dazu nichts weiter sagen. Aber noch folgender Hinweis: Es war noch nie gut, zu versuchen irgendwelche Symptome zu bekämpfen. Viel besser ist es, die Ursache aufzuspüren. Daher: zuerst einmal eine Reparatur-Installation von Excel bzw. Office durchführen. Falls das nichts hilft: eine Neuinstallation des Office-Pakets. Wenn das nicht hilft, dann eine Neuinstallation des kompletten Rechners. Glaub mir: das tut zwar weh, ist aber am sinnvollsten.

PS: Was ich auf die Schnelle mit dem Suchbegriff "excel speichern-dialog zu groß" gefunden habe, ist diese Seite: https://www.tipps-tricks-kniffe.de/windows-die-groesse-des-dialogfensters-speichern-selber-festlegen-und-dauerhaft-speichern/
Ich habe es nicht getestet, da ich gerade am Mac sitze, aber vielleicht hilft es dir ja weiter.
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6294
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: Makro zum speichern

Beitragvon balubaer » 29. Sep 2021, 14:09

Hallo Helmut.
Danke für deinen Tip.
Mit einer Neuinstallation von Office habe ich es schon versucht. Auch habe ich schon versucht mein System per Acronis sicherung auf einen früheren zeitpunkt, wo das problem noch nicht bestannt zurück zu setzen. Auch das hat nicht geholfen.
Wenn es aber mit meiner Frage nicht so funktioniert, wird mir nichts anderes übrig bleiben und alles per Hand zu machen. Solange das damit geht wird es halt so gemacht.
Mal sehen, in den nächsten tagen soll win11 kommen. Dabei werde ich dann mal sehen was windows 11 alles kann, und ob das problem dann immer noch besteht.
Also danke nochmals für deine tips.
Bis dahin, und schöne Grüsse aus köln.
Dummheit ist, wer verfrisst, was nicht zu versaufen ist. :P :P
Benutzeravatar
balubaer
Neuling
 
Beiträge: 2
Registriert: 28. Sep 2021, 15:59
Wohnort: Köln

Re: Makro zum speichern

Beitragvon Kuwe » 30. Sep 2021, 07:59

Hallo balubaer,

füge in der PERSONAL.XLSB ein neues Klassenmodul ein, ändere dessen Namen in clsExcelApp und füge folgenden Code ein:
Code: Alles auswählen
Option Explicit

Public WithEvents ExcelWatch As Application

Private Sub ExcelWatch_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
  If Wb.Saved = False Then
    Select Case MsgBox("Sollen Ihre Änderungen gespeichert werden?", vbYesNoCancel + vbInformation)
      Case vbYes
        Wb.Save
      Case vbNo
        Wb.Saved = True
      Case vbCancel
        'Dein Code
        Cancel = True
    End Select
  End If
End Sub

In das schon vorhandene VBA-Modul DieseArbeitsmappe der PERSONAL.XLSB kommt dann dieser Code:
Code: Alles auswählen
Option Explicit

Dim oKlasseExcel As clsExcelApp

Private Sub Workbook_Open()
  Set oKlasseExcel = New clsExcelApp
  Set oKlasseExcel.ExcelWatch = Application
End Sub

Codes abgeleitet von hier: Klassen [6] - Events [2] - Application
Gruß Uwe
Benutzeravatar
Kuwe
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6639
Registriert: 30. Dez 2003, 18:37

Re: Makro zum speichern

Beitragvon Gast » 30. Sep 2021, 10:28

Hallo Uwe.
Du bist der Hit.
Das war genau das was ich gesucht habe.
Klappt bestens.
Riesigen dank für deine Hilfe :P :P :P :P :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Gast
 

Re: Makro zum speichern

Beitragvon HKindler » 30. Sep 2021, 12:06

Hi balubaer,

schön, dass die Funktionen von Kute für dich funktionieren. Allerdings hatte ich genau dieselbe Lösung ja auch schon erwähnt, wenn auch nicht einfach so zum Kopieren, sondern zum Selbermachen. Wenn du dem Link in meinem ersten Absatz gefolgt wärst, dann hättest du dir die Lösung von Kuwe bereits gestern selbst basteln können. Denn auf jener Seite und dem Link darauf ist fast wortgleich dasselbe beschrieben.

Da mir heute schon von anderer Seite ein herablassendes Verhalten vorgeworfen wurde, möchte ich diesem Ruf gerecht werden und anmerken, dass "selber den Kopf anzustrengen" heutzutage offensichtlich nicht mehr angesagt ist.
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6294
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 29 Gäste