Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Macros laufen nicht mehr nach Speichern der Datei

Macros laufen nicht mehr nach Speichern der Datei
Michael
Hallo Miteinander,
ich bin neu in disem Forum und habe gleich ein dickes Problem. Ich habe ein größeres Makro geschrieben,welches mir mit Hilfe einer Userform Daten in eine Kalkulationstabelle schreibt. Diese Datei wird dann unter einem Schlüsselnamen in ein bestimmtes Verzeichnis in meinem Netzwerk gespeichert.
Soweit klappt alles.
Meine Idee war nun mithilfe dieser abgespeicherten Datei merhrere Varianten zu erstellen, indem ich die gespeicherten Daten wieder in die Userform ziehe und einen Index hochzählen lasse. Dies alles funktioniert auch einwandfrei in der "Originaldatei".
Das Öffnen der gespeicherten Datei funktioniert auch noch ganz normal... rufe ich dann jedoch das Makro zum Befüllen der userform auf, schmiert Excel 2007 und 2010 sofort ab....Fehlermeldung "Excel funktioniert nicht mehr.......... wie gesagt in der Originaldatei funktioniert alles einwandfrei.
Und das beste wenn ich die automatische Dateiformat von xlsm auf xls stelle, funktioniert auch die Kopie einwandfrei.
Hat jemand eine Idee was das verursachen kann....nach zwei Tagen verzweifelter Suche bin ich mit meinem Latein am Ende
Anzeige
AW: Macros laufen nicht mehr nach Speichern der Datei
03.04.2012 15:45:31
Tino
Hallo,
"wenn ich die automatische Dateiformat von xlsm auf xls stelle, funktioniert auch die Kopie einwandfrei"
Dann könnte es am falschen Format liegen?!
Ab xl2007 müsstest Du beim speichern unter das Format entsprechend mit angeben.
Siehe auch in der VBA Hilfe unter XlFileFormat-Enumeration.
Gruß Tino
Anzeige
AW: Macros laufen nicht mehr nach Speichern der Datei
03.04.2012 16:16:48
Michael
Das habe ich gemacht.....so gehts nicht
ActiveWorkbook.SaveAs Filename:=Pfad & Dateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
so gehts:
ActiveWorkbook.SaveAs Filename:=Pfad & Dateiname, FileFormat:=xlExcel8, CreateBackup:=False
ich weiß auch nicht irgendwie steckt in der Geschichte der wurm drin
Anzeige
AW: Macros laufen nicht mehr nach Speichern der Datei
03.04.2012 16:50:06
Tino
Hallo,
xlExcel8 ist für .xls Datei nicht für .xlsm
xlsx = xlOpenXMLWorkbook
xlsm = xlOpenXMLWorkbookMacroEnabled
xlsb = xlExcel12
xls = xlExcel8
Versuch mal so, Code bezieht sich auf die aktive Mappe.
Option Explicit

Sub Save_As_Version()
Dim Pfad$, Dateiname$, booIsSave As Boolean

Pfad = ThisWorkbook.Path 'Pfad anpassen 
Dateiname = ThisWorkbook.Name 'Dateiname anpassen + Extention (.xls oder .xlsm usw...) 

booIsSave = Speichern_Unter(Dateiname, Pfad)

If booIsSave Then
    MsgBox "Datei wurde gespeichert"
End If
End Sub

'Function Dialog Speichern unter ********************************************************************** 
Function Speichern_Unter(ByVal sFile_Name As String, ByVal sPath As String) As Boolean
Dim ArrFileFormat, varIndex, sExtension$, iFileFormat%
'Extension der Datei 
sExtension$ = Right$(sFile_Name, Len(sFile_Name) - InStrRev(sFile_Name, "."))
'zulässige Erweiterung, evlt. weitere hinzufügen 
ArrFileFormat = Array("xlsx", "xlsm", "xlsb", "xls") 'Datei Versionen 
varIndex = Application.Match(sExtension, ArrFileFormat, 0) 'Index für Dialog und Angabe 
     
'Formatabfrage 
iFileFormat = File_Format(sExtension$)

If iFileFormat = 0 Then
    MsgBox "Auswahl ist kein Excel File!", vbCritical
    Exit Function
End If

sPath = IIf(Right$(sPath, 1) = "\", sPath, sPath & "\")
'welche Excelversion 
On Error GoTo Error_Handler:
If Val(Application.Version) > 11 Then
    'Datei im richtigen Format speichern 
    ActiveWorkbook.SaveAs sPath & sFile_Name, iFileFormat
ElseIf iFileFormat = 56 Then
    'bis Version 11, speichern als *.xls 
    ActiveWorkbook.SaveAs sPath & sFile_Name
Else
    MsgBox "Extension kann mit dieser Excel- Version nicht gespeichert werden!", vbCritical
    Exit Function
End If

Error_Handler:
    If Err.Number = 0 Then
        Speichern_Unter = True
    Else
        MsgBox Err.Description, vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
              "Error: " & Err.Number, _
              Err.HelpFile, _
              Err.HelpContext
    End If
End Function
 
'Funktion zum ermitteln des Dateiformats ab xl2007 
'zulässige Erweiterung, evlt. weitere hinzufügen 
Private Function File_Format(sExtension$)
Select Case LCase(sExtension$)
    Case "xlsx": File_Format = 51
    Case "xlsm": File_Format = 52
    Case "xlsb": File_Format = 50
    Case "xls": File_Format = 56
End Select
End Function

Gruß Tino
Anzeige
AW: Macros laufen nicht mehr nach Speichern der Datei
03.04.2012 17:46:40
Michael
Hallo Tino,
also ich habe dein Script eingebaut und es macht auch gnau das was es soll. Wunderbar wird die Datei gespeichert und .....dann kommts.....Microsoft Excel funktioniert nicht mehr.......wird geschlossen.
es ist zum verrückt werden......
aber vielleicht hat einer eine Idee wenn ich ich noch folgendes bemerke:
wenn ich die Datei nach erfolgter autom. Speicherung schließe.....jedoch nicht Excel und dann die Datei wieder öffne....funktioniert sie auch einwandfrei........
Anzeige
lade doch mal solch eine Datei hoch...
03.04.2012 17:58:44
Tino
Hallo,
sensible Daten kannst Du ja durch Muster ersetzen.
Gruß Tino
AW: lade doch mal solch eine Datei hoch...
04.04.2012 08:55:41
Michael
Hallo Tino,
ich habe dir meine Ursprungsdatei hochgeladen in voller Version mit gefüllter Tabelle. Wie gesagt, beim ersten mal funktioniert es bei mir. Erst die gespeicherte Kopie macht den Ärger.....
Ich habe gestern noch etwas herum probiert....dabei ist mir Aufgefallen dass, wenn ich eine Kopie öffne und nicht gleich "Neu " drücke, sonder erst die Entwicklungsumgebung öffne und nur die Userform einmal anklicke... danach die Entwicklungsumgebung wieder schließe und dann "neu" drücke, das verfluchte Teil doch Tatsächlich funktioniert.
Anzeige
wo ist die Datei?
04.04.2012 12:17:07
Tino
Hallo,
und wo ist der Link zu dieser Datei?
Gruß Tino
sorry bei mir funktioniert es ...
04.04.2012 15:37:45
Tino
Hallo,
also habe dies jetzt mehrfach durchgespielt bei mir hängt sich Excel nicht auf.
Vielleicht hängt es an Deinem Server? Versuch es mal bei Dir lokal auf dem Rechner.
Mal was anderes, deinen Code kann man auch ohne Select schreiben.
Option Explicit

Sub neukalk()
Application.ScreenUpdating = False

Range("I6").Value = Range("I6").Value + 1

'Datum aktualisieren 
With Range("L6")
    .Value = Date
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
End With

'Datum in String umwandeln und schreibweise Ändern 
Range("R6").Value = Format(Date, "yymmdd")

'Erfassungsmaske aufrufen 
Application.ScreenUpdating = True

Datenmaske.Show
End Sub
In Deiner Userform würde ich evtl. Schleifen verwenden um Code zu sparen.
Dim i&, ii%

'... 

For i = 10 To 19
    ii = ii + 1
    Cells(i, 5) = Me("txtb_Teilebez" & ii)
Next i
ii = 0

For i = 10 To 19
    ii = ii + 1
    Cells(i, 12) = Me("txtb_TK" & ii)
Next i
ii = 0
'... 
'... 
'... 
Die Verwendung von Option Explicit ist beim programmieren auch Pflicht ;-)
http://www.online-excel.de/excel/singsel_vba.php?f=4
Gruß Tino
Anzeige
AW: sorry bei mir funktioniert es ...
04.04.2012 17:20:27
Michael
Hallo Tino,
danke dass du dich so toll um mein Problem gekümmert hast....es scheint tatsächlich ein Problem mit meinem NAS-Server (NetApp) zu sein. Ich habe meinen Speicherpfad lokal gelegt und siehe da auch nach dem xten Index läuft die Datei noch. Nun arbeite ich schon über 10 Jahre mit NetApp-Servern und hatte noch nicht ein Problem mit den Maschinen und dann stolpert man über so ein Ding.... bin mal gespannt, was die Jungs von NetApp dazu sagen.
Zu deinen Tipps muss ich sagen Danke.... ich werde versuchen diese umzusetzen....diese For I -geschichte habe ich noch nicht so richtig gerafft...vielleicht liegt es an meiem Alter (fast 50) oder daran, dass ich mir fast alles selber beibringen muss......wer weiß
nochmal vielen Dank
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel Makros funktionieren nicht mehr? So löst du das Problem!


Schritt-für-Schritt-Anleitung

  1. Makro überprüfen: Stelle sicher, dass das Makro korrekt programmiert ist und keine Fehler enthält. Verwende die Option Option Explicit am Anfang deines VBA-Codes, um sicherzustellen, dass alle Variablen deklariert werden.

  2. Dateiformat beim Speichern: Achte darauf, das richtige Dateiformat zu wählen. Wenn du ein Makro verwendest, solltest du die Datei im Format .xlsm speichern:

    ActiveWorkbook.SaveAs Filename:=Pfad & Dateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
  3. Alternatives Format testen: Wenn die Makros nicht funktionieren, teste, ob das Speichern im alten Format .xls das Problem löst. Verwende dazu:

    ActiveWorkbook.SaveAs Filename:=Pfad & Dateiname, FileFormat:=xlExcel8, CreateBackup:=False
  4. Excel-Version überprüfen: Stelle sicher, dass du eine unterstützte Excel-Version verwendest, da einige Funktionen und Formate nicht in älteren Versionen verfügbar sind.

  5. Umgebung testen: Wenn das Problem weiterhin besteht, teste das Makro auf deinem lokalen Rechner anstelle eines Netzwerk-Servers, um zu prüfen, ob es an der Serverumgebung liegt.


Häufige Fehler und Lösungen

  • Makros funktionieren nicht mehr nach dem Speichern: Wenn dein Makro in der Originaldatei funktioniert, aber nicht in der gespeicherten Kopie, könnte es am Dateiformat liegen. Überprüfe, ob du das richtige Format beim Speichern gewählt hast.

  • Excel stürzt ab: Wenn Excel beim Ausführen eines Makros abstürzt, kann es an einem Fehler im Code liegen. Verwende Debugging-Tools, um den fehlerhaften Teil zu identifizieren.

  • Keine Rückmeldung von Excel: Wenn Excel einfriert, kann das an einer großen Datenmenge oder ineffizientem Code liegen. Überprüfe den Code auf ineffiziente Schleifen oder Berechnungen.


Alternative Methoden

  • Verwendung von Excel-Add-Ins: Manchmal kann die Verwendung von Add-Ins helfen, das Problem mit nicht funktionierenden Makros zu umgehen. Suche nach Add-Ins, die die Funktionalität deiner Makros erweitern.

  • Direktes Arbeiten mit Daten: Anstatt Makros zu verwenden, kannst du auch Funktionen wie SVERWEIS oder INDEX und VERGLEICH verwenden, um Daten zu manipulieren.

  • VBA-Fehlerbehandlung implementieren: Baue Fehlerbehandlungsroutinen in deinen Code ein, um potenzielle Fehler abzufangen und zu behandeln.


Praktische Beispiele

Ein einfaches Makro, das eine Zelle aktualisiert, könnte wie folgt aussehen:

Sub UpdateCell()
    Range("A1").Value = "Hallo Welt!"
End Sub

Wenn du das Makro in eine Userform einfügen möchtest, könntest du den folgenden Code verwenden:

Private Sub UserForm_Initialize()
    Me.txtb_Teilebez.Value = "Gib hier deinen Text ein"
End Sub

Diese Beispiele zeigen, wie du einfache Makros erstellen kannst, die auch ohne komplexe Programmierung funktionieren. Überprüfe jedoch immer, ob die Makros auch nach dem Speichern noch funktionieren!


Tipps für Profis

  • Code optimieren: Verwende Schleifen und Arrays, um die Effizienz deines Codes zu steigern. Anstatt jede Zelle einzeln zu bearbeiten, könntest du mehrere Zellen gleichzeitig aktualisieren.

  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um herauszufinden, an welcher Stelle dein Makro scheitert. Dies kann dir helfen, schneller Lösungen zu finden.

  • Regelmäßige Backups: Mache regelmäßige Backups deiner Excel-Dateien, insbesondere wenn du mit Makros arbeitest. So kannst du im Falle eines Fehlers schnell auf eine funktionierende Version zurückgreifen.


FAQ: Häufige Fragen

1. Warum funktionieren meine Excel-Makros nicht mehr?
Es kann an einem falschen Dateiformat oder an Fehlern im VBA-Code liegen. Überprüfe das Format und debugge deinen Code.

2. Was mache ich, wenn Excel beim Ausführen eines Makros abstürzt?
Versuche, das Makro auf einem lokalen Rechner auszuführen und prüfe, ob der Code korrekt ist. Verwende Debugging-Tools, um Fehler im Code zu finden.

3. Wie speichere ich eine Datei im Makro-fähigen Format?
Verwende den Befehl:

ActiveWorkbook.SaveAs Filename:=Pfad & Dateiname, FileFormat:=xlOpenXMLWorkbookMacroEnabled

4. Welche Excel-Version sollte ich verwenden?
Es wird empfohlen, mindestens Excel 2007 oder höher zu verwenden, um die neuesten Funktionen und Formate zu unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige