PDA

Vollständige Version anzeigen : Datei soll sich selbst loeschen


chrisinform
06.11.2005, 21:24
Hallo Leute,

ich möchte, dass eine Exceldatei sich selbst löscht (später soll es ein Addin sein). Folgendermaßen habe ich das Problem gelöst, jedoch frage ich mich, ob es nicht vielleicht auch bessere Lösungen gibt.

Für Vorschläge wäre ich dankbar, die nachfolgende Version ist irgendwie nicht optimal... - Dank und Gruß, Christian

- zur Selbstlöschung wird die Sub Selbstloeschung aufgerufen
- der Code befindet sich hinter der Tabelle1 -



Public Sub Selbstloeschung()
Tabelle1.Cells(1, 1) = ThisWorkbook.FullName
Sheets("Tabelle1").Copy
Application.OnTime Time + TimeSerial(0, 0, 1), Application.ActiveWorkbook.FullName & "!Tabelle1.loeschen"
ThisWorkbook.Close savechanges:=False
End Sub

Public Sub loeschen()
Kill Tabelle1.Cells(1, 1)
ThisWorkbook.Close savechanges:=False
End Sub

Xerx
06.11.2005, 21:55
Laut Code schliest du die Tabelle ja nur

Dein Code:

Public Sub Selbstloeschung()
Tabelle1.Cells(1, 1) = ThisWorkbook.FullName
Sheets("Tabelle1").Copy
Application.OnTime Time + TimeSerial(0, 0, 1), Application.ActiveWorkbook.FullName & "!Tabelle1.loeschen"
ThisWorkbook.Close savechanges:=False
End Sub

Public Sub loeschen()
Kill Tabelle1.Cells(1, 1)
ThisWorkbook.Close savechanges:=False
End Sub



Ich werd aus dem net ganz Schlau, weil:


Public Sub Selbstloeschung()
Tabelle1.Cells(1,1) = ThisWorkbook.FullName

Anzeigen des Pfades in Zelle "A1!"


Sheets("Tabelle1").Copy

Tabelle Kopieren


Application.OnTime Time + TimeSerial(0, 0, 1), _
Application.ActiveWorkbook.FullName & "!Tabelle1.loeschen"

Aktive Workbook löscht sich nach 1 sec mit Pfad!
Frage: Wenn der Pfad mit gelöscht wird, ist dann nicht auch das 2te Workbook
in der Application weg?


ThisWorkbook.Close savechanges:=False
End Sub

Ohne Speichernachfrage die Arbeitsmappe schliessen


Public Sub loeschen()
Kill Tabelle1.Cells(1, 1)
ThisWorkbook.Close savechanges:=False
End Sub

Zelle "A1" in Tabelle1 löschen
Ohne Speichernachfrage die Arbeitsmappe schliessen
??????

Hmm, ich verstehe den Sinn gerade nicht, kann deshalb vllt garade nicht folgen.
Aber vllt wäre nen größerer QC sinvoll, oder du beschreibst was du
bezweckst, dann könnte man vllt ne (bessere) Lösung finden

chrisinform
06.11.2005, 22:36
Hallo,

hier der kommentierte Code... sorry, hätte ich auch gleich machen können:



Public Sub Selbstloeschung()
'Schreibt den Pfad der aktuellen Datei in die Tabelle1 der aktuellen Datei
Tabelle1.Cells(1, 1) = ThisWorkbook.FullName
'Tabelle 1 wird in eine neue Arbeitsmappe kopiert (inklusive dieses Quelltextes)
Sheets("Tabelle1").Copy
'Es wird ein Timer gesetzt (1 Sekunde), der die Funktion löschen in der neu angelegten Arbeitsmappe aufruft.
Application.OnTime Time + TimeSerial(0, 0, 1), Application.ActiveWorkbook.FullName & "!Tabelle1.loeschen"
'Diese Datei wird geschlossen, noch bevor die Sekunde um ist
ThisWorkbook.Close savechanges:=False
End Sub

Public Sub loeschen()
'Nachdem die Sekunde um ist wird diese Funktion durch den Timer innerhlab der neuen Arbeitsmappe aufgerufen. Da die ursprüngliche geschlossen ist, kann sie nun "gekillt" werden. Der Dateipfad steht auf der Tabelle1
Kill Tabelle1.Cells(1, 1)
'Nun noch das kopierte Arbeitsblatt schließen). Resultat: Alles ist geschlossen und die ursprüngliche Datei ist gelöscht
ThisWorkbook.Close savechanges:=False
End Sub


Mein Ziel ist es, dass eine Excelpappe sich selbst löscht. Geht das auch irgendwie anders?

Dank und Gruß, Christian

Sascha Trowitzsch
06.11.2005, 23:46
Wie soll eine Datei sich selbst löschen??
Solange Zugriff auf eine Datei besteht - und solange Code darin abläuft ist sie offen - wird das Löschen von Windows verweigert.
Selbstmord gibt's (fast) nur bei Menschen.

Ciao, Sascha

Nepumuk
07.11.2005, 04:16
Hi,

einfach so:

<nobr><span style="font-family:Courier New,Arial; font-size:9pt ;" ><b><span style="color:#000080"; >Public</span> <span style="color:#000080"; >Sub</span> test()</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >With</span> ThisWorkbook<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Saved = <span style="color:#000080"; >True</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ChangeFileAccess xlReadOnly<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kill .FullName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Close <span style="color:#000080"; >False</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span><br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b><br /></span></nobr>

chrisinform
07.11.2005, 06:22
Hallo Nepumuk,

1000 Dank... das ist genau die Version die ich gesucht habe.

Gruß, Christian

Sascha Trowitzsch
07.11.2005, 10:17
Schluck..., ich nehme alles zurück!

Ciao, Sascha