Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Application.Dialogs(xlDialogSaveAs)

Forumthread: Application.Dialogs(xlDialogSaveAs)

Application.Dialogs(xlDialogSaveAs)
02.12.2016 13:27:41
Stefan
Liebe Makro Speziallisten,
ich habe folgende Funktion bei der am Ende ein File als text file gespeichert wird. Sollte der User abbrechen drücken, habe ich noch eine Rückkehr Funktion eingebaut.
Mein Problem ist nun, dass das text File nun nicht mit normalen Kommas gespeichert wird, sondern gemäß amerikanischen Systems mit Punkt als Dezimaltrennung.
Sub Speichern_unter_Korrektur_Upload()
'MAKRO KORREKTUR_UPLOAD
'Meldungen unterdrücken
Application.DisplayAlerts = False
Sheets("Info").Select
'Set Pfad
ChDrive "M"
Dim pfad As String
pfad = ThisWorkbook.Path
Dim NeuerName As String
NeuerName = Range("XFD1")
'Autofilter
Sheets("Korrektur upload").Select
Columns("A:K").Select
Selection.AutoFilter Field:=8, Criteria1:="0"
Selection.AutoFilter Field:=9, Criteria1:="0"
'Copy
Columns("A:K").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'Save as
Application.Dialogs(xlDialogSaveAs).Show NeuerName, xlTextWindows, False = y
'y = Application.Dialogs(xlDialogSaveAs).Show
If y = False Then
ActiveWorkbook.Close:
Sheets("Korrektur upload").Select:
Selection.AutoFilter:
Sheets("Info").Select:
ActiveWorkbook.Save
End If
ActiveWorkbook.Save
'Meldungen anzeigen
Application.DisplayAlerts = True
'Autofilter löschen
Sheets("Korrektur upload").Select
Selection.AutoFilter
Sheets("Info").Select
End Sub

Hat jemand eine Idee, wie man definieren kann, in welchem Zahlensystem das text file abgespeichert wird ?
Danke & LG
Stefan
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Dialogs(xlDialogSaveAs)
05.12.2016 03:13:25
Lukkeeee
Lieber Stefan,
mein Vorschlag waere es wenn du einfach mit einer Keypress-Action mit dem Ascii-Code den Punkt durch ein Komma austauschen wuerdest.
Funktioniert natuerlich nur wenn du deine Kommas selber eingibst. Du koenntest aber auch noch eine Art suchen und ersetzen ueber deinen Dialog darueber laufen lassen.
Das waren von meiner Seite her nur 2 kurze Ideen. Vielleicht helfen sie dir ja weiter.
Gruss
Lukkeeee
Anzeige
AW: Application.Dialogs(xlDialogSaveAs)
05.12.2016 10:54:37
Daniel
Hi
wenn die Zahlen mit Komma als Dezimalzeichen gespeichert werden sollen, muss per VBA der Parameter Local:=True gesetzt werden, ansonsten speichert VBA immer im internationalen Format.
ob und wie du diesen Parameter im Dialog setzen kannst, weiß ich nicht.
Alternativ kannst du den Dialog auch per GetSaveAsFileName und SaveAs nachbauen, das funktioniert dann im Prinzip so:
Dim Speichername As String
Dim NeuerName As String
NeuerName = Range("XFD1")
Speichername = Application.GetSaveAsFilename(InitialFileName:=NeuerName, Filefilter:="Textfile , _
*.txt")
If Speichername Like "*.txt" Then
ActiveWorkbook.SaveAs Filename:=Speichername, FileFormat:=xlTextWindows, Local:=True
Else
... hier dann der Code, der laufen soll wenn abbrechen gedrückt wurde ...
End If
gruß Daniel
Anzeige
AW: Application.Dialogs(xlDialogSaveAs)
05.12.2016 11:32:01
Stefan
Hallo Daniel,
das ist schon mal ein super Ansatz. Nur leider bekomme ich bei
Speichername = Application.GetSaveAsFilename(InitialFileName:=NeuerName, Filefilter:="Textfile , _
*.txt")
einen Kompilierungsfehler.
Hat jemand eine Idee ?
LG Stefan
AW: Application.Dialogs(xlDialogSaveAs)
05.12.2016 11:40:22
Stefan
:o) ?
AW: Application.Dialogs(xlDialogSaveAs)
05.12.2016 12:39:13
Daniel
Hi
nunja, in welcher Zeile bekommst du denn den Fehler?
der VBA-Editor markiert dir doch normalerweise die fehlerhafte Zeile?
hast du den code einfach nur kopiert oder selber geschrieben?
beim kopieren von Codetext aus diesem Forum besteht bei längeren Codezeilen das Problem, dass der Forumseditor dann automatisch einen Zeilenumbruch (die Stelle mit dem Unterstrich) einfügt und diese Einfügung aber nicht kompatibel mit dem dem VBA-Edtior ist.
du müsstest dann diese Umbrüche nachträglich noch eintfernen und hier das
... Filefilter:="Textfile , _
*.txt")
in eine Zeile umschreiben:
... Filefilter:="Textfile ,*.txt")

Ansonsten ist das hier ja nur ein Codeaussschnitt um dir den entspechenden Gedankenanstoss zu geben und kein vollständiger Code, den du einfach nur kopieren kannst.
Wenn ein Fehler bei dir auftritt, müsstest du uns schon zeigen, was du da programmiert hast.
gruß Daniel
Anzeige
;
Anzeige

Infobox / Tutorial

Anwendung von Application.Dialogs(xlDialogSaveAs) in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne den VBA-Editor (Alt + F11) und erstelle ein neues Modul.

  2. Code einfügen: Füge den folgenden Code in das Modul ein, um das Speichern mit Application.Dialogs(xlDialogSaveAs) zu implementieren:

    Sub Speichern_unter_Korrektur_Upload()
       Application.DisplayAlerts = False
       Sheets("Info").Select
       ChDrive "M"
       Dim pfad As String
       pfad = ThisWorkbook.Path
       Dim NeuerName As String
       NeuerName = Range("XFD1").Value
    
       Sheets("Korrektur upload").Select
       Columns("A:K").Select
       Selection.AutoFilter Field:=8, Criteria1:="0"
       Selection.AutoFilter Field:=9, Criteria1:="0"
       Columns("A:K").Select
       Selection.Copy
       Workbooks.Add
       Selection.PasteSpecial Paste:=xlPasteValues
       Application.CutCopyMode = False
    
       ' Save as Dialog
       Application.Dialogs(xlDialogSaveAs).Show NeuerName, xlTextWindows
       ' Hier kannst du das Speichern logischer gestalten
    
       Application.DisplayAlerts = True
       Sheets("Korrektur upload").Select
       Selection.AutoFilter
       Sheets("Info").Select
    End Sub
  3. Dialog anpassen: Um die Datei im richtigen Format zu speichern, kannst du den Parameter Local:=True verwenden, wie im nächsten Abschnitt beschrieben.


Häufige Fehler und Lösungen

  • Kompilierungsfehler: Wenn du beim Verwenden von Application.GetSaveAsFilename einen Fehler erhältst, überprüfe, ob du den Code korrekt kopiert hast. Oft werden Zeilenumbrüche eingefügt, die in VBA nicht gültig sind. Stelle sicher, dass der Code in einer einzigen Zeile bleibt:

    Speichername = Application.GetSaveAsFilename(InitialFileName:=NeuerName, Filefilter:="Textfile, *.txt")
  • Zahlensystem: Wenn die Zahlen nicht im gewünschten Format gespeichert werden, stelle sicher, dass du den Parameter Local:=True in deinem Speichervorgang einfügst.


Alternative Methoden

Anstelle von Application.Dialogs(xlDialogSaveAs) kannst du auch die GetSaveAsFilename Methode verwenden, um mehr Kontrolle über den Speichervorgang zu haben. Hier ein Beispiel:

Dim Speichername As String
Speichername = Application.GetSaveAsFilename(InitialFileName:="Name", Filefilter:="Textfile, *.txt")
If Speichername <> "False" Then
    ActiveWorkbook.SaveAs Filename:=Speichername, FileFormat:=xlTextWindows, Local:=True
End If

Diese Methode gibt dir die Möglichkeit, den Dateinamen vor dem Speichern zu überprüfen.


Praktische Beispiele

Hier ein einfaches Beispiel, wie du die Dialoge in VBA verwenden kannst:

Sub Beispiel_SaveAs()
    Dim NeuerName As String
    NeuerName = "Beispiel.txt"
    Application.Dialogs(xlDialogSaveAs).Show NeuerName
End Sub

Das Beispiel zeigt, wie du Application.Dialogs(xlDialogSaveAs).Show verwenden kannst, um dem Benutzer die Möglichkeit zu geben, den Speicherort und den Dateinamen auszuwählen.


Tipps für Profis

  • Nutze Application.Dialogs(xlDialogOpen).Show, um eine Datei zu öffnen. Dies kann hilfreich sein, wenn du mit mehreren Dateien arbeitest.
  • Du kannst application.dialogs(xldialogsaveas).show arguments verwenden, um spezifische Argumente beim Speichern festzulegen, z.B. den Dateityp.
  • Achte darauf, dass du Local:=True in deinem Speichervorgang verwendest, wenn du sicherstellen möchtest, dass die Zahlen im richtigen Format gespeichert werden.

FAQ: Häufige Fragen

1. Wie kann ich das Dialogfeld anpassen? Du kannst die Argumente der Show Methode anpassen, um bestimmte Parameter wie den Dateityp festzulegen.

2. Was ist der Unterschied zwischen SaveAs und GetSaveAsFilename? SaveAs speichert die Datei direkt, während GetSaveAsFilename den Benutzer nur nach einem Dateinamen fragt, ohne die Datei sofort zu speichern.

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