Speichern einer Datei in VBA wird nicht ausgeführt

Tarkoon

Lt. Commander
Registriert
Juli 2004
Beiträge
1.185
Hallo,

ich verwende in einer Access-Datenbank folgenden VBA-Code:

Dim file As String file = "c:\tmp\text.xls" Dim xlsObj As Object Set xlsObj = CreateObject("Excel.Application") xlsObj.Workbooks.Open file xlsObj.ActiveWorkbook.Sheets("Sheet1").Rows(3).Delete xlsObj.ActiveWorkbook.Save

Die text.xls wird wie erwartet geöffnet, die Zeile ist auch gelöscht und der VBA Code läuft ohne Fehlermeldung sauber bis zum Ende durch.
Wenn ich jetzt die Excel-Datei schließe und wieder öffne, ist die Zeile aber wieder da! Das Speichern wurde also offensichtlich NICHT durchgeführt... Die Frage ist, warum? Hab ich was falsch gemacht? Laut Online-Doku sollte Save eine gültige Methode auf einem Workbook sein... Mit ".SaveAs file" verhält es sich genauso.

Vielen Dank vorab für eure Unterstützung!
 
Mal mit ".Save file" probiert?
 
das mit dem activeworkbook ist immer so ne sache, das active workbook ist im endeffekt das fenster das den focus hat. das geht oft in die hose.

ich würde es so machen:
Dim file As String
path = "c:\tmp\"
file = "text.xls"
Dim xlsObj As Object
Set xlsObj = CreateObject("Excel.Application")
xlsObj.Workbooks.Open path & file
xlsObj.Workbooks(file).Sheets("Sheet1").Rows(3).Delete
xlsObj.Workbooks(file).Save
 
siehe Rocketworm...das wollte ich auch gerade schreiben... :(
 
Also ich habe jetzt folgendes ergänzt:

filename = Mid(file,InStrRev(file,"\") + 1 ) (per Ausgabe geprüft, der Teil funktioniert)

und unten alle Objektmethoden folgendermaßen:

xlsObj.Workbooks(filename).Save

Ergebnis, exakt wie vorher findet das Save einfach nicht statt...
Das Zeilenlöschen klappt aber auch nach wie vor ganz wie gewünscht.

Es scheint also kein Problem von ActiveWorkbook zu sein...
 
Zuletzt bearbeitet:
Also exakt das Script von Rocketworm aus Excel heraus gestartet funktioniert bei mir ganz wunderbar.

Nimm mal deinen Code, erstelle ein neues Excel-Dokument und pack das dort in den VBA-Editor. Ich könnte mir vorstellen, dass es tatsächlich am Starten aus Access liegt.
 
Auf meinem anderen Rechner aus Excel VBA raus und nur diesem Code klappt es auch...
Ich habe jetzt mal zum Debugging aus der Zeile
xlsObj.Workbooks(filename).Save
MsgBox (xlsObj.Workbooks(filename).Save)
gemacht.
Auf meinem "Problemsystem" bekomme ich ein False zurück - auf meinem anderen hier ein True.
Gibt es weitere Möglichkeiten eine Debugginginfo zu erhalten, die tiefer geht als das poplige False?
Ich muss ja raus bekommen, WARUM es nicht geht...
 
Mir fällt gerade auf dass du kein close dabei hast, könnte mir vorstellen das Access die datei jedesmal öffnet und somit mehrfach offen hält und somit das schreiben blockiert.
So solltest du das Workbook schließen und gleichzeitig speichern können:
Workbooks(filename ).Close savechanges:=True
 
Nach nervenaufreibendem Rumgesuche hab ich die Ursache endlich gefunden - außerhalb von Office und VBA... :freak:
Eine Sicherheitssoftware, die tief in die Registry eingreift, verhindert Schreibaktionen von VBA.

Vielen lieben Dank für eure Hilfe und Ideen! Ohne die wäre ich wahrscheinlich nicht so schnell darauf gekommen, außerhalb von VBA/Office zu suchen.
 
Zurück
Oben