Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
596to600
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Frage nach "Kopie erstellen?"

Frage nach "Kopie erstellen?"
08.04.2005 22:08:53
paula
Hallo Excel-Gemeinschaft
Wie könnte ich veranlassen, daß Excel bei jeder Arbeitsmappe,die geschlossen wird, zuerst fragt, ob von der zu schließenden Arbeitsmappe eine Kopie erstellt werden soll? Genauer gesagt, wo soll das Makro hin? In der Arbeitsmappe selbst soll es nicht hin
Ich vermute doch in der Persönl.xls,wo ich es schon versucht habe, ich Snob.
Das Makro könnte ich selbst schreiben,nur wohin damit!
Über eine Idee würde mich im Voraus sehr freuen
Paula

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage nach "Kopie erstellen?"
08.04.2005 22:15:07
K.Rola
Hallo,
wenn du das in der PERSONL.XLS haben willst, brauchst du ein Klassenmodul, das Ereignisse
auf Application-Ebene verarbeiten kann.
Das Ereignis wäre dann:
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Gruß K.Rola
AW: Frage nach "Kopie erstellen?"
08.04.2005 22:23:02
paula
Hallo K.Rola
Bist klasse, du. Denke, ab jetzt komme ich selbst weiter
Danke Danke
Paula
AW: Frage nach "Kopie erstellen?"
08.04.2005 23:20:53
paula
Hallo K.Rola
Von wegen,ab jetzt komme ich selbst weiter...
Es klappt nicht, muß ich noch etwas beachten?
Mein Makro:
Sub WB_Close()
Dim WB_Name As String
Dim Kopie_Pfad As String
'
Kopie_Pfad = "J:\Eigene Dateien (Backup)\Excel\Kopien\"
WB_Name = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
'ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:=WB_Name & "_Kopie"
End Sub
Mein Klassenmodul:

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Call WB_Close
End Sub

Bitte hilf mir weiter
Paula
Anzeige
AW: K.Rola, bitte melden, es klappt irgendwas nich
08.04.2005 23:28:15
paula
Hallo K.Rola
Von wegen,ab jetzt komme ich selbst weiter...
Es klappt nicht, muß ich noch etwas beachten?
Mein Makro:
Sub WB_Close()
Dim WB_Name As String
Dim Kopie_Pfad As String
'
Kopie_Pfad = "J:\Eigene Dateien (Backup)\Excel\Kopien\"
WB_Name = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
'ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:=WB_Name & "_Kopie"
End Sub
Mein Klassenmodul:

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Call WB_Close
End Sub

Bitte hilf mir weiter
Paula
Anzeige
Hast du mal auf die Uhr geschaut ... ;-)
08.04.2005 23:38:06
Ramses
Hallo
... Die Antworter im Forum werden nicht bezahlt und sind freiwillig hier.
Von warten hat niemand was gesagt ;-)
Zudem wäre schon noch interessant zu wissen, was nicht klappt.
Die Glaskugel wird ab 18:00 Uhr abgestellt ;-)

Sub WB_Close()
Dim WB_Name As String
Dim Kopie_Pfad As String
Kopie_Pfad = "J:\Eigene Dateien (Backup)\Excel\Kopien\"
activeworkbook.SaveCopyAs kopie_pfad & thisworkbook.Name & "_Kopie.xls"
End Sub

Gruss Rainer
AW: Hast du mal auf die Uhr geschaut ... ;-)
08.04.2005 23:46:08
paula
hallo rainer
Weiß, es sit nicht selbstverständlich, daß jetzt noch einer antwortet
Bab bitte Nachsicht mit mir, sonst werd ich heute nicht schlafen.
Zur Glaskugel hast Recht, deshalb nochmal dsa Prob
Excel soll fragen, wenn da eine Arbeitsmappe geschlossen wird,ob eine gesonderte Kopie
erstellt werden soll.
K.Rola sagte, ein Klassenmodul müsste her. Hab ich gemacht, doch Excel merkt nicht,daß eine Arbeitsmappe geschlossen wird
Mein Makro:
Sub WB_Close()
Dim WB_Name As String
Dim Kopie_Pfad As String
'
Kopie_Pfad = "J:\Eigene Dateien (Backup)\Excel\Kopien\"
WB_Name = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
'ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:=WB_Name & "_Kopie"
End Sub
Mein Klassenmodul:

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Call WB_Close
End Sub

Danke für deine Hilfe im voraus
Anzeige
Da musst du wohl noch ein wenig warten...
09.04.2005 00:11:59
Ramses
Hallo
Klassenmodule sind nicht unbedingt meine Spezialität,... aber es fällt mir schwer zu glauben, dass ein Klassenmodul das öffnen und schliessen von anderen Mappen überwachen kann.
... aber mit VBA ist fast nichts unmöglich :-)
Vielleicht hat K.Rola noch ein oder zwei diskrete Codezeilen :-)
Gruss Rainer
AW: Dann werd ich mal warten...Dank dir totzdem oT
09.04.2005 00:21:36
paula
Dank dir
Gruss Paula
AW: Dann werd ich mal warten...Dank dir totzdem oT
09.04.2005 05:51:23
Nepumuk
Hallo Paula,
eine Mustermappe: https://www.herber.de/bbs/user/20905.xls
Beachte den Code im Modul "DieseArbeitsmappe". Dort wird der Verweis auf die Klasse gesetzt.
Gruß
Nepumuk
Anzeige
AW: Dann werd ich mal warten...Dank dir totzdem oT
09.04.2005 07:50:31
Ramses
Hallo Nepumuk
Das Klassenmodul hatte ich auch soweit, aber das "initialisieren" der Klasse verstehe ich irgendwie nicht.
Schritt 1:
Option Explicit

Private Sub Workbook_Open()
Set myXL_Application.myApplication = Application
End Sub

Schritt 2:
Public myXL_Application As New clsApp
Schritt 3:
Option Explicit
Public WithEvents myApplication As Excel.Application

Private Sub myApplication_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)....
Könntest du bitte mal versuchen, mir die verschiedenen Schritte zu erklären, ...speziell Schritt 1, warum das hier nötig ist. Irgendwie krieg ich das nicht auf die Reihe.
Gruss Rainer

Anzeige
AW: Dann werd ich mal warten...Dank dir totzdem oT
09.04.2005 11:57:39
Nepumuk
Hi Rainer,
du machst in Gedanken der zweiten vor dem ersten Schritt. Wenn nach dem aktivieren der Makros der Interpreter die Module durchläuft, wird die Variable "myXL_Application" angelegt. Erst dann wird das Open - Ereignis ausgeführt. Alle nicht in Prozeduren gekapselten Variablen, sind in dem Moment schon angelegt. Das ist wie in einer "normalen" Sub. Egal wo ich die DIM - Anweisung hinschreibe, die Variablen werden angelegt, bevor die erste Codezeile ausgeführt wird. Es gibt also keine bedingte Dimensionierung. Darum sind solche Konstrukte völlig unsinnig, da die Variable a auf alle Fälle angelegt wird, auch wenn A1 nicht leer ist.


Public Sub test1()
    If Cells(1, 1).Value = "" Then
        Dim As Integer
        a = 1
    End If
End Sub


Starte das Makro mal mit F8 und schau in das Lokalfenster. Die Variable a wird angelegt, wenn das Makro aufgerufen wird (Die Zeile Public Sub test1() ist gelb unterlegt)
Der Interpreter meckert nur, wenn eine Variable schon angesprochen wird, bevor sie dimensioniert wurde, da er das Makro Zeile für Zeile von oben nach unten in den Maschinencode übersetzt. Also, das:


Public Sub test2()
    a = 1
    Dim As Integer
End Sub


geht nicht.
Gruß
Nepumuk
Anzeige
AW: Dann werd ich mal warten...Dank dir totzdem oT
09.04.2005 12:34:25
Ramses
Hallo Nepumuk
DAS ist mir schon klar,... wo ich nicht durchsteige sind die beiden Anweisungen
Set myXL_Application.myApplication = Application
und
Public WithEvents myApplication As Excel.Application
Wieso muss zweimal eine Zuweisung auf Application und EXCEL.Application gemacht werden ?
Das glaube ich verstanden zu haben
Public myXL_Application As New clsApp
Weist EXCEL bei allen Aufrufen die "myXL_Application" betreffen auf das Klassenmodul "clsAPP" zu verweisen und dort das jeweilige Ereignis zu suchen.
Gruss Rainer
AW: Dann werd ich mal warten...Dank dir totzdem oT
09.04.2005 12:53:19
Nepumuk
Hi Rainer,
mit
Public WithEvents myApplication As Excel.Application
legst du nur eine leere Objektvariable an. In der Set - Anweisung verweist du dann das Application - Objekt das diese Variable.
Jetzt klarer?
Gruß
Nepumuk
Anzeige
Merci,... eigentlich klar :-) o.T.
09.04.2005 13:22:57
Ramses
...
AW: Hab nicht gewartet, ich war fleißig ;-)
09.04.2005 13:32:56
paula
Hallo Rainer,hallo Neptumuk,
Vielen vielen Dank für euer Geistiges.Genau das hatte ich nicht verstanden.
Hab nicht geschlafen, sondern überall nach Hinweisen auf Klassenmodulen gesucht, wo ich konnte.Heute Morgen um 6:Uhr hatte ich dann eine fertige Datei als Addin gebastelt.Hab bis jetzt geschlafen, kein Wunder.Deshalb melde ich mich erst jetzt.
Dieses Addin überwacht jegliches Schließen von Dateien mit .xls-Endung, AUSSCHLIESSLICH der Personl.xls (Beim Schließen von Excel wird diese auch geschlossen, soll aber aus der Überprüfung ausgeschlossen werden).Eure Denkansätze haben mich in meiner Arbeit bestärkt.
So konnten wir alle heute etwas lernen. Danke vielmals für euer Hilfe
Wenn ihr sehen möchtet, wie sie geworden ist, seht mal hier nach
https://www.herber.de/bbs/user/20908.xla
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige