Supportnet / Forum / Tabellenkalkulation
Fehler im Makro zum Speichern
Frage
Hallo zusammen,
Ich habe ein Problem mit dem folgenden Makro. Wenn ich bei der ersten Dialogbox (Dateiname eingeben) auf abbrechen klicke bricht das Makro mit einer Fehlermeldung ab. Was muss ich ändern, damit ich einfach wieder zurückkomme.
Sub DatenübergabeVerz()
´
´ Datenübergabe und Speichern
Application.DisplayAlerts = False
Dateiname = InputBox("Bitte geben Sie einen Dateinamen ein:", "Datei speichern", "Daten.xls")
Sheets("bericht").Cells.Copy
Workbooks.Add
With Range("A1")
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
´Linien ausschalten
ActiveWindow.DisplayGridlines = False
End With
Range("A1").Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=Dateiname, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Sheets("menue").Select
Application.DisplayAlerts = True
End Sub
Dann hätte ich da noch eine weiterführende Frage, die aber nicht ganz so wichtig ist:
Im Augenblick umgehe ich die Frage nach dem Überschreiben einer bereits vorhandenen Datei durch das Ausschalten der Display Alerts. Lieber wäre es mir die Warnmeldung zuzulassen, aber leider bricht diese ebenfalls ab, wenn man "nein" oder "abbrechen" anklickt.
Danke für Eure Hilfe
Casy
Antwort 1 von JoeKe
Hi Casy,
füge folgende Anweisung nach
ein:
If Dateiname="" then
Exit Sub
End If
MfG
JöKe
füge folgende Anweisung nach
Dateiname = InputBox("Bitte geben Sie einen Dateinamen ein:", "Datei speichern", "Daten.xls") ein:
If Dateiname="" then
Exit Sub
End If
MfG
JöKe
Antwort 2 von casy
Super funktioniert,
Danke für die Hilfe.
Allerdings ist mir jetzt ein anderes Problem mit dem Makro aufgefallen:
Die zu kopierende Datei enthält neben der Tabelle auch ein Diagramm. Dieses wird dummerweise nicht mitkopiert.
Hat vielleicht jemand ne Idee für mich ?
Gruss
Casy
Danke für die Hilfe.
Allerdings ist mir jetzt ein anderes Problem mit dem Makro aufgefallen:
Die zu kopierende Datei enthält neben der Tabelle auch ein Diagramm. Dieses wird dummerweise nicht mitkopiert.
Hat vielleicht jemand ne Idee für mich ?
Gruss
Casy
Antwort 3 von JoeKe
Hi casy,
Habs jetzt nicht getestet, aber ersetz mal das:
durch das:
ActiveSheet.Paste
´Linien ausschalten
ActiveWindow.DisplayGridlines = False
Mfg
JöKe
Habs jetzt nicht getestet, aber ersetz mal das:
With Range("A1")
.PasteSpecial Paste:=xlPasteFormats
.PasteSpecial Paste:=xlPasteValues
´Linien ausschalten
ActiveWindow.DisplayGridlines = False
End With durch das:
ActiveSheet.Paste
´Linien ausschalten
ActiveWindow.DisplayGridlines = False
Mfg
JöKe
Antwort 4 von Niels
Hallo Casy!
Versuchs mal hiermit:
Application.DisplayAlerts = False
Dateiname = InputBox("Bitte geben Sie einen Dateinamen ein:", "Datei speichern", "Daten.xls")
If Dateiname = "" Then
Exit Sub
End If
Sheets("bericht").Copy
ActiveWindow.DisplayGridlines = False
ActiveWorkbook.SaveAs Filename:=Dateiname, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Sheets("menue").Select
Application.DisplayAlerts = True
Gruß Niels
Versuchs mal hiermit:
Application.DisplayAlerts = False
Dateiname = InputBox("Bitte geben Sie einen Dateinamen ein:", "Datei speichern", "Daten.xls")
If Dateiname = "" Then
Exit Sub
End If
Sheets("bericht").Copy
ActiveWindow.DisplayGridlines = False
ActiveWorkbook.SaveAs Filename:=Dateiname, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Sheets("menue").Select
Application.DisplayAlerts = True
Gruß Niels
Antwort 5 von nighty
hi all :)
2 beispiele :))
gruss nighty
Sub meineInputbox()
Dim meinInputBox As Variant
meinInputBox = InputBox("Hallo", "Eingabefenster", "Hier ist die Texteingabe :))", vbYesNo + vbQuestion)
If meinInputBox = vbYes Then Range("a1") = "geloescht"
If meinInputBox = vbNo Then Range("a1") = "nicht geloescht"
End Sub
Sub meineMsgBox()
Dim MsgBoxRückwert As Variant
MsgBoxRückwert = MsgBox("MeinText", 3, "Titel", "hilfe", vbYesNo + vbCancel)
If MsgBoxRückwert = vbYes Then Range("a1") = "Ja"
If MsgBoxRückwert = vbNo Then Range("a1") = "Nein"
If MsgBoxRückwert = vbCancel Then Range("a1") = "Abbruch"
End Sub
2 beispiele :))
gruss nighty
Sub meineInputbox()
Dim meinInputBox As Variant
meinInputBox = InputBox("Hallo", "Eingabefenster", "Hier ist die Texteingabe :))", vbYesNo + vbQuestion)
If meinInputBox = vbYes Then Range("a1") = "geloescht"
If meinInputBox = vbNo Then Range("a1") = "nicht geloescht"
End Sub
Sub meineMsgBox()
Dim MsgBoxRückwert As Variant
MsgBoxRückwert = MsgBox("MeinText", 3, "Titel", "hilfe", vbYesNo + vbCancel)
If MsgBoxRückwert = vbYes Then Range("a1") = "Ja"
If MsgBoxRückwert = vbNo Then Range("a1") = "Nein"
If MsgBoxRückwert = vbCancel Then Range("a1") = "Abbruch"
End Sub
Antwort 6 von Casy
@Niels: gute Idee, klingt brauchbar. Ich werde es heute Abend mal versuchen umzubauen.
@JöKe:
Die Idee hatte ich auch schon. Grundsätzlich funktionierts, aber wenn mann Zellen hat mit über 255 (oder so ähnlich) Zeichen, dann kürzt Excel mir die Zelleninhalte :-(
Wahrscheinlich muss ich das Diagramm an eine Zelle binden, aber ich weiss nicht wie
Gruß
Casy
@JöKe:
Die Idee hatte ich auch schon. Grundsätzlich funktionierts, aber wenn mann Zellen hat mit über 255 (oder so ähnlich) Zeichen, dann kürzt Excel mir die Zelleninhalte :-(
Wahrscheinlich muss ich das Diagramm an eine Zelle binden, aber ich weiss nicht wie
Gruß
Casy
Antwort 7 von nighty
hi all :))
range verlangt ein .value fuer ueber 255 zeichen :)))
gruss nighty
range verlangt ein .value fuer ueber 255 zeichen :)))
gruss nighty
Antwort 8 von Casy
@Nighty
ich bin gerade etwas langsam (....????...)
das kopieren von mehr als 255 Z. funktioniert doch mit meinem alten Makro (über Range) ich kriege nur das Diagramm nicht mit.
Die 255 Z. Grenze habe ich nur, wenn ich das Blatt als solches kopiere.
Oder worauf beziest du dich jetzt.
Guss
Casy
ich bin gerade etwas langsam (....????...)
das kopieren von mehr als 255 Z. funktioniert doch mit meinem alten Makro (über Range) ich kriege nur das Diagramm nicht mit.
Die 255 Z. Grenze habe ich nur, wenn ich das Blatt als solches kopiere.
Oder worauf beziest du dich jetzt.
Guss
Casy
Antwort 9 von JoeKe
Hi Casy,
hab mir dein Problem nochmal angesehen. Ich denke es liegt an den Eigenschaften deines Diagramms. Klick mal mit rechts in dein Diagramm > Diagrammfläche formatieren > Eigenschaften dort bei Objektpositionierung "von Zellposition und -größe abhängig" aktivieren.
MfG
JöKe
hab mir dein Problem nochmal angesehen. Ich denke es liegt an den Eigenschaften deines Diagramms. Klick mal mit rechts in dein Diagramm > Diagrammfläche formatieren > Eigenschaften dort bei Objektpositionierung "von Zellposition und -größe abhängig" aktivieren.
MfG
JöKe
Antwort 10 von Casy
Hallo,
@JöKe:
Die Idee ist grundsätzlich nicht verkehrt, wenn ich die Zellabhängigkeit aktiviert habe funktioniert es in sofern, dass wenn ich den Zellbereich markiere und kopiere nimmt er das Diagramm mit. Wenn ich dann aber wieder das Makro benutze kopiert er ohne Diagramm - es ist zum Mäusemelken - ???
Gruss Casy
@JöKe:
Die Idee ist grundsätzlich nicht verkehrt, wenn ich die Zellabhängigkeit aktiviert habe funktioniert es in sofern, dass wenn ich den Zellbereich markiere und kopiere nimmt er das Diagramm mit. Wenn ich dann aber wieder das Makro benutze kopiert er ohne Diagramm - es ist zum Mäusemelken - ???
Gruss Casy
Antwort 11 von JoeKe
Hallo Casy.
leider kann ich dein Problem nicht weiter nach vollziehen. Mit folgendem Code funktioniert das Kopieren einwandfrei auch mit dem Diagramm und über 255 Zeichen in einer Zelle.
Sub DatenübergabeVerz()
´ Datenübergabe und Speichern
Application.DisplayAlerts = False
dateiname = InputBox("Bitte geben Sie einen Dateinamen ein:", "Datei speichern", "Daten.xls")
If dateiname = "" Then
Exit Sub
End If
Sheets("bericht").Cells.Copy
Workbooks.Add
ActiveSheet.Paste
´Linien ausschalten
ActiveWindow.DisplayGridlines = False
Range("A1").Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=dateiname, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Sheets("menue").Select
Application.DisplayAlerts = True
End Sub
MfG
JöKe
leider kann ich dein Problem nicht weiter nach vollziehen. Mit folgendem Code funktioniert das Kopieren einwandfrei auch mit dem Diagramm und über 255 Zeichen in einer Zelle.
Sub DatenübergabeVerz()
´ Datenübergabe und Speichern
Application.DisplayAlerts = False
dateiname = InputBox("Bitte geben Sie einen Dateinamen ein:", "Datei speichern", "Daten.xls")
If dateiname = "" Then
Exit Sub
End If
Sheets("bericht").Cells.Copy
Workbooks.Add
ActiveSheet.Paste
´Linien ausschalten
ActiveWindow.DisplayGridlines = False
Range("A1").Select
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=dateiname, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Sheets("menue").Select
Application.DisplayAlerts = True
End Sub
MfG
JöKe
Antwort 12 von Casy
@JöKe:
Danke für deine Hilfe, aber leider funktioniert deine Version bei mir überhaupt nicht.
Ich werde mein Problem wohl noch mal als eigenen Thread einstellen. Vielleicht fällt ja noch jemandem was ein.
Gruss
Casy
Danke für deine Hilfe, aber leider funktioniert deine Version bei mir überhaupt nicht.
Ich werde mein Problem wohl noch mal als eigenen Thread einstellen. Vielleicht fällt ja noch jemandem was ein.
Gruss
Casy

