PDA

Vollständige Version anzeigen : Nach Excelexport Datenblatt löschen


sunny
03.01.2002, 12:46
Hallo an alle und noch ein schönes neues Jahr nachträglich...
Mein Problem: Ich exportiere Daten von Access => Excel. Dort wird es in eine Tabelle geschrieben die ich vorher festgelegt habe.

CODE DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Interessenten", "C:\bla\bla\bla\bla\test.xls, false,"""

Nun meine Frage:
Wie bekommt man es hin das nachdem ich die Tabelle bearbeitet etc. habe und wieder schliesse, der Inhalt gelöscht wird. Sonst stehe ich jedes mal vor dem Problem, das gefragt wird, "die Tabelle besteht bereits, überschreiben....?"
Kann mir jemand helfen?
Wäre super!
grüße sunny :(

Gustav Kurz
03.01.2002, 15:16
<font size="2" face="verdana">Hallo,

... ' Dein Code
... ' Dein Code
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Interessenten", "C:\bla\bla\bla\bla\test.xls, false,"""
... ' Dein Code
... ' Dein Code
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * From DeineTabelle;"
DoCmd.SetWarnings True

sunny
03.01.2002, 15:39
Hallo Gustav,
danke für den Tipp aber leider war es nicht ganz das was ich gesucht habe. Aber warscheinlich habe ich mich da ein wenig unverständlich ausgedrückt.
Ich möchte nicht den Access DS löschen, sondern die Exceltabelle in die ich die DS exportiert habe.
Diese dient mir nur als Grundtabelle zur Bearbeitung. Wird nachher warscheinlich woanderst abgespeichert, aber ich muß in VBA doch angeben, wohin er speichern soll wenn der Button gedrückt wird. Deswegen diese Art. Oder habe ich da etwas falsch verstanden???
Grüße sunny

Alexander Jan Peters
03.01.2002, 15:40
<font face="Tahoma">Hallo zusammen,

irgendwie habe ich die Fragestellung hier anders verstanden:

@Sunny
Du willst die neue Exceldatei nach dem Bearbeiten usw. löschen, oder?
Mit dem Code von Gustav wird aber der Inhalt der Access-Tabelle gelöscht.

Die Excel-Tabelle kannst Du direkt löschen in dem Du den Befehl Kill einsetzt:
</font>

Function fFileExists(strFileName As String) As Boolean
'Prüfung, ob die Datei existiert
Dim intLen As Integer

On Error Resume Next
intLen = Len(Dir(strDest))

fFileExists = (Not Err And intLen > 0)
End Function

Sub sTest(strFileName As String)
'in der Variablen strFileName wird der komplette Pfad der Datei übergeben
If strFile <> "" Then
If Not fFileExists(strFileName) Then
'Datei wurde nicht gefunden
MsgBox "Die Datei existiert nicht."
Else
'Datei löschen -> ohne Nachfrage !
Kill strFileName
End If
End If

End Sub

<font face="Tahoma">Sinnvoll wäre der Einsatz z.B. im Open- oder Load-Ereignis des Formulars.

Gruß

A.J. Peters

sunny
03.01.2002, 15:57
Hallo Alexander,
danke für Deinen Tipp. Ich denke schon das es so funktionieren könnte, nur leider hapert es gerade wegen meines noch nicht so beträchtlichen wissens in VBA an der Fehlermeldung.
Ich habe Deinen Code genommen und in die Beim-Laden Ereignisfunktion hineingeschrieben. Nun meckert er aber beim Debuggen, das ein End Sub erwartet würde. Und zwar an der Stelle,

------------------------------------------------
End Function
Sub sTest(strFileName As String)
-------------------------------------------------
Vielleicht kannst Du mir nochmal helfen???
Tausend Dank, sunny <img src="graemlins/idee.gif" border="0" alt="[Idee]" />

Alexander Jan Peters
03.01.2002, 16:22
<font face="Tahoma">Sorry,

ich wußte nicht, wie Dein Kenntnisstand ist.
Eine Prozedur beginnt mit Sub ... und endet mit End Sub, eine Funktion mit Function ... und endet mit End Function.
Der Button z.B. der den Export auslöst (DoCmd ...) hat eine dem Ereignis "Beim Klicken" zugeordnete Prozedur ( etwa Sub Button1_Click() ).
Die beiden Codeabschnitte, die ich gepostet hab, sind einmal eine Funktion zum Überprüfen, ob die Datei vorhanden ist oder nicht (Function fFileExists...) und eine Prozedur, die zeigen soll, wie man den Kill-Befehl benutzen kann (Sub sTest(strFileName) ).
Die Test-Prozedur müßtest Du anpassen und dann ins Load-Eregnis des Formulars einfügen.
In der Entwurfansicht auch Eigenschaften gehen, dort auf Ereignis -> Beim Laden -> Ereignisprozedur einstellen und die 3 Punkte drücken ;) .
Jetzt bist Du im VBA-Modul des Formulars und siehst eine Prozedur:
</font><font face="Courier New">
Private Sub Form_Load()

End Sub
</font><font face="Tahoma">
Dies ist die Prozedur des Ereignisses "Beim Laden" (d.h. sie wird beim Laden des F. ausgeführt).
Jetz kopierst Du als Erstes die Funktion fFileExists (von Function bis End Function) ganz unten in den VBA-Teil.
Danach kommt folgender Teil zwischen Private Sub Form_Load() und End Sub:
</font><font face="Courier New">
Dim strFileName As String
'Pfad der Datei übergeben
strFileName = "C:\bla\bla\bla\bla\test.xls"
If Not fFileExists(strFileName) Then
'Datei wurde nicht gefunden
MsgBox "Die Datei existiert nicht."
Else
'Datei löschen -> ohne Nachfrage !
Kill strFileName
End If
End If
</font><font face="Tahoma">
Fertig.
Allerdings hast Du wahrscheinlich keine Ahnung was da jetzt passiert, oder?
1) Beim Laden des Formulars wird geprüft ob die Datei "C:\bla\bla\bla\bla\test.xls" existiert
2) Falls dem so ist, wird sie ohne Nachfrage gelöscht.

Uff, reicht das? <img src="graemlins/unschuldig.gif" border="0" alt="[unschuldig]" />

Gruß

A.J. Peters</font>

[ 28. Januar 2002: Beitrag editiert von: Alexander Jan Peters ]</p>

sunny
03.01.2002, 16:22
:eek: <img src="graemlins/top.gif" border="0" alt="[Finger hoch]" />
ok, sorry, Frage geklärt!!! Auf jeden Fall tausend dank für deine Hilfe. Es klappt nun.
Ich bin begeistert!!!
<img src="graemlins/top.gif" border="0" alt="[Finger hoch]" /> :p
grüße sunny

[ 03. Januar 2002: Beitrag editiert von: sunny ]</p>