Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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
Inhaltsverzeichnis

Absturz beim Speichern als xlsx

Absturz beim Speichern als xlsx
18.02.2015 08:11:56
Martin
Guten Morgen
Könnte mir jemand sagen, wieso dieses Makro mit speichern als .xls funktioniert, aber bei .xlsx einen Absturz gibt?
Herzlichen Dank im voraus.
Martin

Sub Liste_sortieren()
Dim rng As Range, rngDel As Range, rngSuche As Range
Dim vTitel As Variant
Dim i&, j&
Dim lngCLC&, lngListExist&, lngOC&, lngAnzZeilen&, lngErste&, lngZweite&, lngNr&
Dim strDat$
On Error GoTo Fehler
' Überschriften die NICHT gelöscht werden sollen
vTitel = Array("nummer", "name", "datum", "betrag")
'Überschriften suchen und nicht benötigte löschen
For Each rng In ActiveSheet.UsedRange.Rows(1).Cells
If IsError(Application.Match(rng, vTitel, 0)) Then
If rngDel Is Nothing Then
Set rngDel = rng.EntireColumn
Else
Set rngDel = Union(rngDel, rng.EntireColumn)
End If
End If
Next
If Not rngDel Is Nothing Then rngDel.Delete
Set rng = Nothing
Set rngDel = Nothing
'Schauen ob benutzerdefinierte Liste bereits existiert
lngListExist = Application.GetCustomListNum(vTitel)
'Falls ja, wird die Listennummer für die Sortierung um 1 erhöht, da bei der Sort-Methode  _
die 1 die Nummer für die Standardsortierung ist
'Falls nein, wird die benutzerdefinierte Liste kreiert und dann die Listennumer erhöht - _
siehe oben
If lngListExist > 0 Then
lngOC = lngListExist + 1
Else
Application.AddCustomList listArray:=vTitel
lngCLC = Application.CustomListCount
lngOC = lngCLC + 1
End If
'Die Spalten werden sortiert
i = Worksheets(1).UsedRange.Columns.Count
j = Worksheets(1).UsedRange.Rows.Count
Range(Cells(1, 1), Cells(j, i)).Sort Key1:=Range("A1"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=lngOC, _
MatchCase:=False, Orientation:=xlLeftToRight
'Benutzerdefinierte Liste wieder löschen, falls sie neu kreiert worden ist
If lngListExist = 0 Then Application.DeleteCustomList ListNum:=lngCLC
Set rng = Nothing
Set rngSuche = Nothing
Set rngDel = Nothing
' Speichern
strDat = Format(Now, "yymmdd")
ChDir "I:\"
ActiveWorkbook.SaveAs Filename:="Soll_" & strDat & ".xlsx", FileFormat:=xlOpenXMLWorkbook
MsgBox "Die Ausführung wurde erfolgreich beendet"
Exit Sub
Fehler:     MsgBox "Fehler, bitte an Administrator benachrichtigen"
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Weil xlsx keine Makros enthält! (owT)
18.02.2015 08:29:42
EtoPHG

AW: Weil xlsx keine Makros enthält! (owT)
18.02.2015 09:27:53
Martin
Hallo EtoPHG
Danke für die Antwort.
Das Makro ist aber nicht in der zu speichernden Arbeitsmappe sondern im Personal.xlsb, so denke, das Workbook müsste als xlsx abgespeichert werden können......? Es sollte ja auch kein Makro beinhalten.
Danke für Hilfe.
Martin

AW: Weil xlsx keine Makros enthält! (owT)
18.02.2015 09:48:49
Daniel
Hi
schon mal im Einzelstep getestet, wo das Makro genau abstürzt?
als kleine Optimierung würde ich folgendes tun:
- den Pfad mit bei SaveAs angeben, das spart dir das ChangeDir (ausserdem müsstest du hier das Laufwerk änderen und nicht das Verzeichnis.
- die Dateierweiterung im Dateinamen weglassen, die wird vom System automatisch richtig vergeben
- das System anweisen, die Datei ohne Rückfrage zu überschreiben falls sie schon mal vorhanden ist:

strDat = Format(Now, "yymmdd")
Application.DisplayAlerts = FALSE
ActiveWorkbook.SaveAs Filename:="I:\Soll_" & strDat, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = TRUE
Gruß Daniel

Anzeige
AW: Weil xlsx keine Makros enthält! (owT)
18.02.2015 10:04:41
Martin
Hallo Daniel und Ralf
Der Absturz ist genau bei der Zeile des Speicherns (SaveAs).
Ich habe jetzt die Änderungen, die Daniel vorgeschlagen hat, eingebaut.
Die Fehlermeldung ist effektiv ein Abstutz von Excel:
Userbild
Besten Dank für die Hilfe!
Gruss
Martin

AW: Weil xlsx keine Makros enthält! (owT)
18.02.2015 12:16:23
Ralf
Hallo Martin,
sieht zwar nicht danach aus, aber evtl. ist ein ungültiges Zeichen im Dateiname?
strDat = Format(Now, "yymmdd")
DateiName="I:\Soll_" & strDat
debug.print DateiName
stop 'schau ins direktfenster (strg+g)
Application.DisplayAlerts = FALSE
ActiveWorkbook.SaveAs Filename:=DateiName, FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = TRUE
Mit
DateiName = Application.GetSaveAsFilename DateiName
kannst du den Dateinamen erst testen..
Gruß
Ralf

Anzeige
AW: Weil xlsx keine Makros enthält! (owT)
18.02.2015 09:44:05
Ralf
Hallo Martin,
was genau passiert? Stürzt ab ist eine ungenaue Beschreibung.
Kommentiere bitte das "On Error Goto Fehler" aus.
Setze ein STOP vor SaveAs und verfolge im Lokal-Fenster, was passiert.
Melde den Fehlercode.
Gruß
Ralf

versuch mal so
18.02.2015 16:57:18
Tino
Hallo,
versuch mal und lass ChDir weg und gib beim Filename den kompletten Pfad an.
oder vielleicht auch so
ChDrive "I:\"
ChDir "I:\"
ActiveWorkbook.SaveAs Filename:="Soll_" & strDat & ".xlsx", FileFormat:=xlOpenXMLWorkbook
Persönlich würde ich versuchen immer den kompletten Pfad zu verwenden.
Gruß Tino
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige