Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel 2010 Speichern unter Dialog ohne Bestätigung

Frage Microsoft Microsoft Office

Mitglied: Armin-K

Armin-K (Level 1) - Jetzt verbinden

15.09.2012, aktualisiert 10:56 Uhr, 20628 Aufrufe, 10 Kommentare

Liebe Forengemeinde,
vielleicht kann jemand helfen? Ich habe in einer Excel-Datei ein Makro/Funktion zum eigenständigen Speichern der Datei nach bestimmten Zellangaben. Das funktioniert grundsätzlich auch. Es wird beim Aufruf des Speichern Dialogs aber immer eine Bestätigungsabfrage eingeblendet (die noch mit OK bestätigt werden muss), kann man das evtl. überbrücken. Möglicherweise bereits vorhandene Dateien könnten überschrieben werden "nach Möglichkeit ohne weitere Abfrage, vielleicht Hinweis ?? ")

Sub Speichern_unter1()

Dim Datei As String
Dim Verzeichnis As String
Dim SaveDummy As Variant

Verzeichnis = "d:\temp\" 'Verzeichnis-Vorschlag
Datei = Range("F4") & Format(Date, "_dd_mm_yy") & ".xlsm" 'Datei-Vorschlag
SaveDummy = SpeichernUnter(Verzeichnis & Datei)
If SaveDummy <> False Then ActiveWorkbook.SaveAs SaveDummy 'Es wurde im Dialog auf Speichern gedrückt

End Sub



Function SpeichernUnter(VorgabeName As String) As Variant
SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, Filefilter:="Excel Dateien (*.xlsm),*.xlsm*", _
FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern")
End Function
Mitglied: Pjordorf
15.09.2012, aktualisiert um 14:35 Uhr
Hallo,

Zitat von Armin-K:
nach Möglichkeit ohne weitere Abfrage, vielleicht Hinweis ??
Und mit code tags sieht es noch besser aus http://www.administrator.de/faq/20#toc-63007705836-28

Das geht schon. Mit DisplayAlerts = False kannst du diesen Dialog unterdrücken, aber das kann auch daneben gehen. Ist die existierende Datei schon durch jemand anderes ebenfalls geöffnet, wird dir ein Laufzeitfehler gemeldet. Einfache Variante:
01.
    If SaveDummy <> False Then  
02.
        Application.DisplayAlerts = False 
03.
        ActiveWorkbook.SaveAs SaveDummy 'Es wurde im Dialog auf Speichern gedrückt 
04.
        Application.DisplayAlerts = True 
05.
    End If
Etwas aufwändiger aber dafür besser ist es vor dem Speichern zu prüfen ob die Datei schon existiert und wenn ja das .Save verwenden was ja automatisch überschreibt.
01.
    If DateiVorhanden(SaveDummy) Then 
02.
            ActiveWorkbook.Save 
03.
        Else 
04.
            ActiveWorkbook.SaveAs SaveDummy 'Es wurde im Dialog auf Speichern gedrückt 
05.
        End If 
06.
    End If 
07.
 
08.
Function DateiVorhanden(DateipfadName As Variant) As Boolean 
09.
' Dir liefert den Pfad und Dateiname wenn vorhanden, ansonsten wird ein leerer String zurückgegeben. 
10.
 
11.
    DateiVorhanden = (Dir(DateipfadName) > "") 
12.
 
13.
End Function
Warum hast du dein SaveDummy als Variant definiert? Ein "Dim SaveDummy as String" reicht doch vollkommen.

Gruß,
Peter
Bitte warten ..
Mitglied: Armin-K
15.09.2012 um 15:18 Uhr
Hallo Peter,

vielen Dank für Deine schnelle und liebe Antwort. Ich bin doch noch auf der Suche nach "KnowHow" in den Tiefen des VBA-Universums und scheitere deshalb auch schnell. Den Code habe ich mir nicht selbst einfallen lassen - sondern in Zügen abgekupfert.
Leider komme ich nicht weiter, vielleicht ahbe ich mich aber auch nicht richtig erklärt. Beim Aufruf des Makro soll die Datei als neue Datei gespeichert und geschlossen werden. Eine Bestätigungsabfrage "Speichern" soll nicht mehr gestellt werden.

Ich habe hier noch mal den VBA-Text, die Datei stelle ich auch gern per Mail zur Verfügung...


Sub Speichern_unter1()

Dim Datei As String
Dim Verzeichnis As String
Dim SaveDummy As Variant

Verzeichnis = "d:\temp\" 'Verzeichnis-Vorschlag
Datei = Range("F4") & Format(Date, "_dd_mm_yy") & ".xlsm" 'Datei-Vorschlag
SaveDummy = SpeichernUnter(Verzeichnis & Datei)

If DateiVorhanden(SaveDummy) Then
ActiveWorkbook.Save
Else
ActiveWorkbook.SaveAs SaveDummy 'Es wurde im Dialog auf Speichern gedrückt
End If


End Sub

Function SpeichernUnter(VorgabeName As String) As Variant
SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, Filefilter:="Excel Dateien (*.xlsm),*.xlsm*", _
FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern")

End Function

Function DateiVorhanden(DateipfadName As Variant) As Boolean
' Dir liefert den Pfad und Dateiname wenn vorhanden, ansonsten wird ein leerer String zurückgegeben.

DateiVorhanden = (Dir(DateipfadName) > "")

End Function
Bitte warten ..
Mitglied: Pjordorf
15.09.2012, aktualisiert um 16:12 Uhr
Hallo Armin-K,

Zitat von Armin-K:
Ich habe hier noch mal den VBA-Text
Ohne das dieser in code tags (zum 2ten) hier rein gestellt wurde schaue ich mir den nicht an und antworte auch nicht weiter. Mach es uns doch nicht schwerer als nötig. Ich nemhe mir doch auch Zeit dein Problem zu verstehen und dir eine Lösung bzw. Lösungsansätze bieten zu können und das in einer Form das alle es verstehen können. Dazu gehört es nunmal Code in entsprechende Tags einzubetten. Auch ich habe mir mal Zeit genommen die Forenregeln durchgelesen.

Gruß,
Peter
Bitte warten ..
Mitglied: Armin-K
15.09.2012 um 16:46 Uhr
Hallo Peter,

Du wirst sicher gesehen haben, dass ich neu bin. Die Formatierungsdefizite waren keine Schikane, ich hatte Schwierigkeiten das entsprechend umzusetzen. Ich hoffe es funktioniert so....?

Also noch mal sorry, aber ich habe mir wirklich Mühe gegeben!

LG
Bitte warten ..
Mitglied: Armin-K
15.09.2012 um 16:47 Uhr
01.
Sub Speichern_unter1() 
02.
  
03.
Dim Datei As String 
04.
 Dim Verzeichnis As String 
05.
 Dim SaveDummy As Variant 
06.
  
07.
Verzeichnis = "d:\temp\" 'Verzeichnis-Vorschlag 
08.
 Datei = Range("F4") & Format(Date, "_dd_mm_yy") & ".xlsm" 'Datei-Vorschlag 
09.
 SaveDummy = SpeichernUnter(Verzeichnis & Datei) 
10.
 
11.
 If DateiVorhanden(SaveDummy) Then 
12.
 ActiveWorkbook.Save 
13.
 Else 
14.
 ActiveWorkbook.SaveAs SaveDummy 'Es wurde im Dialog auf Speichern gedrückt 
15.
 End If 
16.
 
17.
  
18.
End Sub 
19.
  
20.
Function SpeichernUnter(VorgabeName As String) As Variant 
21.
 SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, Filefilter:="Excel Dateien (*.xlsm),*.xlsm*", _ 
22.
 FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern") 
23.
 
24.
 End Function 
25.
  
26.
Function DateiVorhanden(DateipfadName As Variant) As Boolean 
27.
 ' Dir liefert den Pfad und Dateiname wenn vorhanden, ansonsten wird ein leerer String zurückgegeben. 
28.
  
29.
DateiVorhanden = (Dir(DateipfadName) > "") 
30.
  
31.
End Function 
32.
 
Bitte warten ..
Mitglied: Pjordorf
15.09.2012 um 17:18 Uhr
Hallo Armin-K,

Zitat von Armin-K:
Du wirst sicher gesehen haben, dass ich neu bin.
Nein, ich muss allerdings gestehen das ich mir dein prifil vorher auch nicht angeschaut habe. Das habe ich aber jetzt nachgeholt und reiche dir unser "Hallo und willkomen hier Forum" jetzt nach

Die Formatierungsdefizite waren keine Schikane
Naja, eine Schikane ist doch gaaaanz was anderes, oder? Sehe ich im F1 Zirkus immer

ich hatte Schwierigkeiten das entsprechend umzusetzen.
Dann einfach fragen wie andere es gemacht haben (dann aber bitte gezielte Fragen)

Ich hoffe es funktioniert so....?
Ja, hat. Du kannst aber auch anstatt den ganzen Quellcode hier erneut (in einer neuen Antwort) rein zu stellen, einfach auf deine Frage / Antworten gehen und dann auf Bearbeiten Klicken und dort auch nachträglich änderungen vornehmen und diese evtl. auch als solche kennzeichnen z.B. mit "Nachtrag" oder [Edit] oder [/Geändert] oder was auch immer

Also noch mal sorry, aber ich habe mir wirklich Mühe gegeben!
Keinen Grund sich schon jetzt zu Entschuldigen. Du wirst bestimmt noch länger hier bei uns bleiben.

Und wie das mit "Antworten und Zittieren" geht siehst du wenn du anstelle von "Antworten" auf "Mit Zitat" gehst

Gruß,
Peter
Bitte warten ..
Mitglied: Pjordorf
15.09.2012, aktualisiert um 18:20 Uhr
Hallo,

Zitat von Armin-K:
Ich bin doch noch auf der Suche nach "KnowHow" in den Tiefen des VBA-Universums
Die F1 Taste im VBA editor ist dein Freund Und im MSDN (Microsft Developer Network - Offen für jeden) ist alles haarklein definiert und auch mit Beispielen. Sonst im WWW Lesestoff für mehr als ein Menschenleben

Leider komme ich nicht weiter
Dann bitte genau angeben wo und was nicht so geht wie du es erwartest. Evtl. mit Zeilennummer und Fehlermeldung denn es hilft uns dich besser zu Verstehen.

Beim Aufruf des Makro soll die Datei als neue Datei gespeichert und geschlossen werden. Eine Bestätigungsabfrage "Speichern" soll nicht mehr gestellt werden.
Und genau das ist auch der Fall. Da kommt keine Abfrage mehr das die Datei schon existiert und ob ich Überschreiben will und dort mit "Ja" - "Nein" - "Abbrechen" Antworten kann. Oder meinst du ganz was anderes?

die Datei stelle ich auch gern per Mail zur Verfügung...
Solange wir hier Öffentlich sind, machen wir das nicht. Andere sollen ja auch hiervon profitieren können.

Wenn das Problem nicht beschreibbar ist hilft es auch mit Bildern zu sagen Du kannst Bilder hier direkt ins Forum stellen. Dazu bei deiner Eröffnungsfrage auf Bearbeiten gehen und dort Bilder hochladen. Es wird ungern gesehen das wir uns Bilder auf irgendwelchen Filehostern anschauen sollen. Die meisten von uns sind da Allergicker

Gruß,
Peter
Bitte warten ..
Mitglied: Armin-K
15.09.2012 um 17:44 Uhr
Hallo Peter,
schönen Dank noch mal für die Hinweise, ein bisschen habe ich jetzt ja schon gelernt. Ich werde weiter neugierig auf alles was noch so kommt sein und bleibe bestimmt dabei. Die bisherigen Erfahrungen waren da auch schon prima!!!

LG
Bitte warten ..
Mitglied: Pjordorf
15.09.2012, aktualisiert um 23:53 Uhr
Hallo Armin-K,

Zitat von Armin-K:
vielleicht ahbe ich mich aber auch nicht richtig erklärt
Ich habe dir mal Folgendes anzubieten. Lies dir die kommentare durch.Hier kannst du entscheiden welche Dialoge du haben möchtest. Per direkter festlegung oder per Zellwert (X1). Keine Angst, ist nicht viel. Wenn du die Kommentare weglässt sind es nur 35 Codezeilen
01.
Sub Speichern_unter1() 
02.
  
03.
Dim strDateiName As String 
04.
Dim strVerzeichnisPfad As String 
05.
Dim strSaveDatei As String 
06.
Dim bSpeichernDialog As Boolean 
07.
Dim bSpeichern As Boolean 
08.
 
09.
bSpeichern = False 
10.
'Wert True = es wird defintiv gespeichert. False = nichts Speichern 
11.
 
12.
'------------------------------------------------------------------------ 
13.
'Festlegen ob der Speichern unter Dialog (GetSaveAsFileName) überhaupt aufgerufen werden soll 
14.
'Wert auf Flase setzen wenn dies nicht gewünscht wird. Kann auch durch eine Zellabfrage (0 oder 1) erfolgen 
15.
'dann bSpeichernDialog = Range("X1") wobei eine 0 Falsch und alles andere Wahr bedeutet. Ansonsten hier Manuell festlegen 
16.
 
17.
bSpeichernDialog = Range("X1") 
18.
'bSpeichernDialog = False 
19.
 
20.
'------------------------------------------------------------------------ 
21.
 
22.
'Verzeichnispfad Vorschlag festlegen 
23.
strVerzeichnisPfad = "c:\temp\" 
24.
 
25.
'Dateiname aus Zelle F4 des aktuellen Blatts holen und Datum (Sortierbar) und Dateierweiterung dranhängen. Die yyymmdd ist bei sortierung richtig 
26.
strDateiName = Range("F4") & Format(Date, "_yyyymmdd") & ".xlsm" 
27.
 
28.
'Speicherpfad und Dateiname zusammenfügen 
29.
strSaveDatei = strVerzeichnisPfad & strDateiName 
30.
 
31.
'------------------------------------------------------------------------ 
32.
 
33.
'Mit dem jetzt vorhandenen Dateiname inkl. Pfad abfragen ob der Speicherort OK ist. 
34.
'Dazu das Dialogfenster GetSaveAsFilename aufrufen (Achtung, mus Zwingend Bestätigt werden 
35.
'Dies aber nur falls der Dialog abgefragt werden soll. bSpeicherDialog regelt dies über Wahr / Unwahr 
36.
If bSpeichernDialog Then 
37.
    'Dialog zum bestätigen des Speicherorts und Datename aufrufen. Achtung, kann auch mit Abbrechen beendet werden 
38.
    'Zuweisen des endgültigen Dateinamens oder ein Falsch wenn abbruch 
39.
    strSaveDatei = SpeichernUnter(strSaveDatei) 
40.
     
41.
    'Wurde abgebrochen? 
42.
    If strSaveDatei = "Falsch" Then 
43.
        'Es wurde im Speicherdialog auf Abbrechen geklickt. Nichts zu tun und Tschüß 
44.
        bSpeichern = False 
45.
        'Exit Sub 
46.
        'Mit Exit Sub kann hier die gesamte restliche SUB beendet werden. Unschön, aber manchmal nötig 
47.
    Else 
48.
        'Im Dialog wurde auf Speichern geklickt 
49.
        bSpeichern = True 
50.
    End If 
51.
Else 
52.
    'Der Dialog sollte nicht aufgerufen werden, also wird der DateiPfad und Name als gegeben und nicht änderbar angenommen. 
53.
    bSpeichern = True 
54.
End If 
55.
'------------------------------------------------------------------------ 
56.
 
57.
'Bestimmen ob dies eine Neue datei oder eine schon vorhandene ist. 
58.
'Falls neu, das .SaveAs verwenden. Wen die Datei schon vorhanden ist, wird zwingend ein Dialog wegen überschreibung eingeblendet 
59.
'daher falls die Datei schon vorhanden ist, das .Save verwenden was einen Überschreiben Dialog nicht aufruft 
60.
Do While bSpeichern 
61.
    If DateiVorhanden(strSaveDatei) Then 
62.
        'Datei wird überschrieben OHNE Dialog 
63.
        ActiveWorkbook.Save 
64.
    Else 
65.
        'Datei wird erstmalig erstellt Ohne Dialog 
66.
        ActiveWorkbook.SaveAs strSaveDatei 
67.
    End If 
68.
    bSpeichern = False 
69.
Loop 
70.
 
71.
End Sub 
72.
 
73.
  
74.
Function SpeichernUnter(VorgabeName As String) As String 
75.
' Dialog Aufrufen um den Speicherort zu bestätigen oder einen anderen Speicherort anzugeben und zu bestätigen 
76.
'Kann auch abgebrochen werden. dann ist der Rückgabewert ein "Falsch", sonst der Pfad und Dateiname 
77.
 
78.
    SpeichernUnter = Application.GetSaveAsFilename(InitialFileName:=VorgabeName, Filefilter:="Excel Dateien (*.xlsm),*.xlsm*", FilterIndex:=1, Title:="Speichern unter...", ButtonText:="speichern") 
79.
    'strSaveDatei = SpeichernUnter 
80.
End Function 
81.
 
82.
 
83.
Function DateiVorhanden(DateipfadName As String) As Boolean 
84.
'Über die Dir Funktion schauen ob die Datei existirt. Wenn ja, wird der dateiname zurückgegeben, sonst ein null String 
85.
'Mit dem vergleich > wird geschaut ob etwas zurück kam. Ergebniss ist True oder False 
86.
 
87.
    DateiVorhanden = (Dir(DateipfadName) > "") 
88.
    
89.
End Function
Und da ich nicht weiß welchen Dialog du genau meinst habe ich dir mal den "Überschreiben Dialog" sowie den "Speichern Unter Dialog" als Bilder hier eingepappt

c6e0aa88c55906bc9044627d27770b9c - Klicke auf das Bild, um es zu vergrößern Speichern Unter Dialog
Dieser kann nicht per Code unterdrückt werden, speziell wo du ihn ja Explizit per .GetSaveAsFileName aufrufst. Da ist eine Benutzerinteraktion dann zwingend von dir erwünscht

f3ceb7267132bf80fba2bbd3ad69b0cc - Klicke auf das Bild, um es zu vergrößern Datei Überschreiben Dialog
Dieser Dialog kann mittels .Save oder .SaveAs entsprechend abgefangen werden.

Gruß,
Peter
Bitte warten ..
Mitglied: Armin-K
16.09.2012 um 09:14 Uhr
Hallo Peter,

PERFEKT , ich hatte mir das genau so gewünscht!

Ganz lieben Gruß

Armin
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
gelöst Excel 2010 Zellen mit bestimmten Inhalt mit Makro formartierten (5)

Frage von packmann2016 zum Thema Microsoft Office ...

Microsoft Office
Excel 2010 - Microsoft Excel kann die Daten nicht kopieren (4)

Frage von EDV-Oellerking zum Thema Microsoft Office ...

Microsoft Office
gelöst Verschieben von Zellinformation in andere Spalte (per VBA) excel 2010 (5)

Frage von thomas1972 zum Thema Microsoft Office ...

Windows 10
Excel 2010 unter Windows 10

Frage von MiSt zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...