Wie erstellt man einen guten Speicherdialog?

Hallo,

mich würde interessieren, wie ein guter Speicherdialog in Excel über ein Makro zu realisieren ist. Zur Zeit habe ich folgenden Code im Makro:
Textdatei = InputBox("Dateiname: ", „Speichern unter“, „C:\Test.txt“) . Dort muss ich dann den Pfad direkt über die Tastatur eingeben.
Ich würde aber lieber einen Speicherdialog haben, wie es ihn in jedem normalen Programm gibt, also wie „speichern unter“ , dort kann man dann ja mit der Maus den Pfad auswählen.
Falls jemand eine Idee hat, wäre das ziemlich hilfreich. Vielen Dank schonmal!

Gruß Achim

Hallo Achim,

was gefällt dir denn an dem eingebauten nicht?
Denn je nachdem in welche Richtung es gehen soll, könnte es z.B. ein CommonDialog-Control werden (das sieht dann so aus wie das normale Speichern unter), ein Eigenbauformular mit DirList und FileList (erinnert dann ein bisschen an Excel vergangener Tage), über API’s oder alles selbstgehäkelt.

Es kommt halt darauf an, was du erreichen willst und wieviel Zeit / Know-How du investieren möchtest.

Gruß
Daniel

Hallo Achim

mich würde interessieren, wie ein guter Speicherdialog in
Excel über ein Makro zu realisieren ist.

Das suchst du wohl:

Sub speichernDialog()
 Application.Dialogs(xlDialogSaveAs).Show
End Sub 

Gruss
Erich

Hallo,
genauso hatte ich mir das vorgestellt. Leider klappt das jetzt nicht, wenn ich die Daten als Textdatei abspeichern will. Die Daten bestehen aus Zelleninhalten, die Objekte habe ich vorher definiert. Nach dem Abspeichern erscheint nun die Fehlermeldung :Laufzeitfehler, die methode Range ist nicht mit Aplication kombinierbar.
Mein funktionierender alter Code sah folgendermaßen aus:

Private Sub CommandButton1_Click()
Dim Textdatei As String, var1 As String, var2 As String, var3 As String, var4 As String, var5 As String, var6 As String, var7 As String, var8 As String, var9 As String, var10 As String, var11 As String, var12 As String, var13 As String, var14 As String, var15 As String, var16 As String, var17 As String, var18 As String, var19 As String, var20 As String, var21 As String
Textdatei = InputBox("Dateiname: ", „Daten speichern“, „C:\Daten.txt“)
var1 = Application.Range(„Mitarbeitererfassung!K22“)
var2 = Application.Range(„Mitarbeitererfassung!M22“)
var3 = Application.Range(„Mitarbeitererfassung!O22“)
var4 = Application.Range(„Mitarbeitererfassung!K24“)
var5 = Application.Range(„Mitarbeitererfassung!M24“)
var6 = Application.Range(„Mitarbeitererfassung!O24“)
var7 = Application.Range(„Mitarbeitererfassung!K26“)
var8 = Application.Range(„Mitarbeitererfassung!M26“)
var9 = Application.Range(„Mitarbeitererfassung!O26“)
var10 = Application.Range(„Mitarbeitererfassung!K28“)
var11 = Application.Range(„Mitarbeitererfassung!M28“)
var12 = Application.Range(„Mitarbeitererfassung!O28“)
var13 = Application.Range(„Mitarbeitererfassung!K30“)
var14 = Application.Range(„Mitarbeitererfassung!M30“)
var15 = Application.Range(„Mitarbeitererfassung!O30“)
var16 = Application.Range(„Mitarbeitererfassung!K32“)
var17 = Application.Range(„Mitarbeitererfassung!M32“)
var18 = Application.Range(„Mitarbeitererfassung!O32“)
var19 = Application.Range(„Mitarbeitererfassung!K34“)
var20 = Application.Range(„Mitarbeitererfassung!M34“)
var21 = Application.Range(„Mitarbeitererfassung!O34“)
var22 = Application.Range(„Mitarbeitererfassung!C22“)
var23 = Application.Range(„Mitarbeitererfassung!F22“)
var24 = Application.Range(„Mitarbeitererfassung!C24“)
var25 = Application.Range(„Mitarbeitererfassung!F24“)
var26 = Application.Range(„Mitarbeitererfassung!C26“)
var27 = Application.Range(„Mitarbeitererfassung!F26“)
var28 = Application.Range(„Mitarbeitererfassung!C28“)
var29 = Application.Range(„Mitarbeitererfassung!F28“)
var30 = Application.Range(„Mitarbeitererfassung!C30“)
var31 = Application.Range(„Mitarbeitererfassung!F30“)
var32 = Application.Range(„Mitarbeitererfassung!C32“)
var33 = Application.Range(„Mitarbeitererfassung!F32“)
var34 = Application.Range(„Mitarbeitererfassung!C34“)
var35 = Application.Range(„Mitarbeitererfassung!F34“)
Open Textdatei For Output Access Write As #1
Write #1, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, var15, var16, var17, var18, var19, var20, var21, var22, var23, var24, var25, var26, var27, var28, var29, var30, var31, var32, var33, var34, var35
Close #1
End Sub

Gruß Achim

Hallo Achim
Das war ein Missverständnis meinerseits. Wenn du Bereiche aus Excel in Word hineinkopieren willst, kannst du ungefähr so vorgehen:

Option Explicit
Sub KopiereExcelToWord()
 Dim Dok As New Word.Application
 'wenn der Bereich aus mehreren Teilbereichen besteht, Schleife einbauen
 ActiveSheet.Range("K22:open\_mouth:34").Copy
 With Dok
 .Visible = True 
 .Documents.Add 
 .Selection.Paste 
 End With
End Sub

Das musst du natürlich noch „feinschleifen“; es ging mir nur ums Prinzip.
Viel Erfolg
Erich

NACHTRAG
In deiner Lösung macht

var1 = Application.Range("Mitarbeitererfassung!K22")

einen Fehler, weil eds richtig heissen müsste

var1 = Application.Range("Mitarbeitererfassung!K22").Value

Erich