1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Umgehen der "Sollen die Änderungen gespeichert werden"-Anzeige.

Discussion in 'Office-Programme' started by grabschmayr, Feb 21, 2008.

Thread Status:
Not open for further replies.
  1. Hallo.

    Habe folgendes Problem:

    Ich öffne mittels eines .vbs-Scriptes ein paar Excel-Dateien. Dann kopiere ich verschiedene Sachen hin und her. Soweit klappt ja alles.
    Nur soll ich dann eine der Excel-Dateien als TEXT (Tabstopp-getrennt) abspeichern. Funktioniert soweit bis ich diese in Excel offene Text-Datei schließen möchte.
    Dann kommt die Meldung "Sollen ihre Änderungen in xyz.txt gespeichert werden?" Ja / Nein / Abbrechen

    Nun wie kann man das umgehen???

    Batch? VBS? Oder vielleicht e in Excel zu lösen???

    Das soll nämlich wieder mal einfach in der Nacht auf meinem Arbeitsplatz ablaufen, damit es niemanden stört,...

    Lg max
     
  2. Urs2

    Urs2 Megabyte

    Ich habe die alte VBS einfach ergänzt, dort wo neu > steht

    Code:
    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Open("C:\Pfad\Deiner\Datei.xls")
    objExcel.Visible = True
    
    	'erzwingt die Aktualisierung, ohne dumme Rückfrage
    objWorkbook.RefreshAll
    
    	'legt den Script schlafen bis aktualisiert ist > Anpassen!
    	'Zahl in Tausendstel-Sekunden, hier also 30 Sekunden
    wscript.sleep 30000
    
    	'speichert die XLS
    objWorkbook.save
    
    	'[COLOR="red"]neu >[/COLOR] verhindert dumme Rückfragen
    objExcel.DisplayAlerts = False
    
    	[COLOR="red"]'neu >[/COLOR] speichert Datei als TXT 
    	'die 20 zuhinterst ist der Code für FileFormat:=xlTextWindows
    	'die 23 gäbe eine CSV (kommagetrennt) > Endung .txt in .csv ändern!
    	'Die Zeit gibt eigenen Namen, wegen überschreiben... >
    	'zB "xyz 5325420.txt" = 53.Tag, 2.Stunde,54.Minute, 20.Sekunde  
    objWorkbook.SaveAs "c:\Pfad\Der\Neuen\Textdatei " & DatePart("y", Date) & _
    	Hour(Now) & Minute(Now) & Second(Now) & ".txt", 20
    
    	'vorsichtshalber nochmals kurzes Abwarten des Speicherns
    wscript.sleep 10000
    
    	[COLOR="red"]'neu >[/COLOR] zurücksetzen
    objExcel.DisplayAlerts = True
    
    	[COLOR="red"]'neu >[/COLOR] schliesst TXT, ohne nochmals zu speichern
    objWorkbook.Close False
    
    	'schliesst Excel
    objExcel.Quit
    
    	'[COLOR="red"]neu >[/COLOR] zurücksetzen
    Set objWorkbook = Nothing
    Set objExcel = Nothing
    

    1. Bei mir geht es so ohne Rückfragen

    2. Speichert die normale XLS im Excel-Format > als neue Datei im TXT-Format mit Tabstops

    3. Die anderen geöffneten Dateien würde ich vorher schliessen und diese als letzte in Excel offenhalten

    4. Die XLS darf nur ein Tabellenblatt enthalten, sonst kann sie Excel nicht komplett umwandeln.

    5. Die Rückfrage beim ExcelSchliessen entfällt mit dem vorherigen "objWorkbook.Close False", wobei False bedeutet "Nicht Speichern". Das erneute Speichern ist überflüssig, sie wurde ja vorher mit "SaveAs..." schon gespeichert.

    6. Genug "Sleep" einbauen, damit auch alles abgearbeitet werden kann.

    Gruss Urs
     
  3. Danke mal für die Hilfe,...

    das funktioniert schon,...

    Nun habe ich ein Folgeproblem:

    Ich habe es nun auf 2 verschiedene Weisen probiert.

    1. So wie von dir vorgeschlagen mit Saveas im vbs.Script abspeichern

    2. im Makro mit saveas

    Bei beidem funktioniert das speichern und anschließendes Schließen.

    Nur hat die nun abgespeicherte Datei ein anderes Format!

    Eigentlich sollte es so aussehen:
    19.02.2008 00:15 4,18
    19.02.2008 00:30 4,24
    19.02.2008 00:45 4,35
    19.02.2008 01:00 4,35

    Doch gespeichert wird es so (Werte rechts sind nicht die gleichen wie oben):
    2/19/2008 0:15 -0.44
    2/19/2008 0:30 -0.50
    2/19/2008 0:45 -0.57
    2/19/2008 1:00 -0.51
    2/19/2008 1:15 -0.44

    Unterschied:
    Datum: "/" statt "."
    Uhrzeit: Stunden keine führende Null mehr
    Werte: "." statt ","

    Was kann ich machen, dass das Format beim speichern nicht verändert wird?
    Wenn ich den ganzen Vorgang händisch, sprich ohne script und makro mache, funktioniert es einwandfrei,...

    Was ist der Fehler???

    Lg max
     
  4. hab grad herrausgefunden, warum das TXT so abgespeichert wird,...

    Das ist amerikanische Schreibweise ! ! !

    Nur, wie kann ich das umstellen, ändern, umgehen???

    lg max
     
  5. Danke nochmal für deine Hilfe,... ohne hätt ich das nicht hinbekommen,...

    habs jetzt geschafft,... hab nur in der XLS das Format der Zellen geändert, mit neuem Format abgespeichert und nun funktioniert es,...

    Juhuuu,....

    Lg max
     
  6. Urs2

    Urs2 Megabyte

    Ja, oft sind so simple Aenderungen die Lösung, aber zuerst muss man darauf kommen...

    Ich hatte hier zuerst auch gestaunt, warum Excel die dumme Frage stellt, ob eine eben gespeicherte Datei nochmals gespeichert werden soll. Sonst weiss Excel immer genau, ob die Anzeige auf dem Bildschirm (im Speicher) auch der Datei auf der HD entspricht.

    Hier wird aber nicht nur gespeichert, sondern jedes mal zuerst in ein anderes Format umgewandelt! Die XLS-Anzeige im Speicher kann so nie mit der TXT-Datei auf der HD identisch sein. Deshalb wird wohl zu recht nochmals gefragt.

    Man könnte die XLS-Anzeige auch nochmals speichern lassen, aber bei unbeaufsichtigt laufenden Aktionen sollte man jede noch so kleine potenzielle Fehlerquelle vermeiden. Aus unerfindlichen Gründen könnte sonst plötzlich kommen:
    "Sind sie wirklich sicher? Andere Benutzer der Datei könnten sauer werden..."

    Gruss Urs
     
Thread Status:
Not open for further replies.

Share This Page