Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro zum Speichern

Makro zum Speichern
15.02.2016 18:51:49
Alexander
Hallo.
Ich möchte ein Excel Dokument im gleichen Ordner wie die Vorlage im Format .xlsb speichern.
Sollte es nicht möglich sein den aktuellen Ordner auszulesen dann kann es auch ein fest vergebener Ordner sein. Zum Beispiel Z:\Rechnungen\2016\
Als Dateinamen dient der Inhalt der Zelle A1.
Ob Als Makro mit Schaltfläche oder als Workbook_BeforeSave ist egal.
Ich habe schon so einiges probiert aber nichts funktioniert, hab erst vor wenigen Wochen mit dem Makro schreiben begonnen.
Vielen Dank schon mal

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Speichern
16.02.2016 10:54:18
Michael
Hallo Alexander!
zB so, hier ohne Ereignis (kannst Du dann auf eine Schaltfläche legen):
Sub SpeicherMich()
Const Pfad As String = "D:" 'Pfad definieren
Dim Ws As Worksheet
Dim DatName As String
'In welchem Tabellenblatt steht der Dateiname?
'Alternativ immer bezogen auf aktives Blatt: Set Ws = ActiveSheet
Set Ws = ThisWorkbook.Worksheets("Tabelle1")
With ThisWorkbook
Select Case Right(Pfad, 1)
Case Is = "\"
DatName = DatNameSauber(Ws.Range("A1").Text)
Case Else
DatName = "\" & DatNameSauber(Ws.Range("A1").Text)
End Select
'Datei speichern mit Makros
'Alternativ, ohne Makros speichern:
'.SaveAs Filename:=Pfad & DatName, FileFormat:=51
.SaveAs Filename:=Pfad & DatName, FileFormat:=52
End With
End Sub
Function DatNameSauber(DatName As String) As String
Dim i As Long
For i = 1 To Len(DatName)
Select Case Mid(DatName, i, 1)
Case Is = "|", ">", "
Den Ursprungspfad setzt Du dann einfach bei "Pfad" einmal ein.
LG
Michael

Anzeige
AW: Makro zum Speichern
18.02.2016 11:14:49
Alexander
Vielen Dank Michael für deine Antwort.
Ich wollte es so machen nur weiß ich nicht wie ich den Dateinamen und den Pfad Definieren kann.
Dateiname=Inhalt der Zelle A1 des Aktiven Blattes
Pfad=C:\
Sub Speichern()
If ActiveWorkbook.Path = "" Then
ActiveWorkbook.SaveAs Application.GetSaveAsFilename _
(, "Excel (*.xlsb), *.xlsb"), xlExcel12
Else
ActiveWorkbook.Save
End If
End Sub
Vielleicht findest du die Zeit mir die zwei Zeilen bei meinem Makro hinzuzufügen.
lg
Alexander

AW: Makro zum Speichern
18.02.2016 13:12:22
Michael
Hallo Alexander!
Hast Du die Kommentare in meinem Code nicht gelesen?
Du kannst den Speicherort der Vorlage nicht dem daraus erzeugten Dokument übergeben - deswegen hab ich Dir Code gegeben, in dem Du einfach schon von vornherein den Speicherpfad definieren kannst. Du musst nur Pfad und Blattname anpassen - der Inhalt von A1 wird dann bereits in meinem Code als Dateiname übernommen.
Hier nochmal geputzt - Du musst nur im gekennzeichneten Bereich Anpassungen vornehmen (in der Originaldatei) - dann klappt das bei jeder aus der Vorlage erstellten Datei:
Sub Speichern()
'----- Anpassen -----
Const Pfad As String = "C:" 'Standard-Pfad definieren
Const Blatt As String = "Tabelle1" 'Blatt definieren
Const Zelle As String = "A1" 'Zielzelle definieren
Const DatFormat As Byte = 50 'Dateiformat =50 .xlsb, =51 .xlsx, =52 .xlsm
'----- Ende -----
Dim Ws As Worksheet
Dim DatName As String
If ThisWorkbook.Path = "" Then
Set Ws = ThisWorkbook.Worksheets(Blatt)
With ThisWorkbook
Select Case Right(Pfad, 1)
Case Is = "\"
DatName = DatNameSauber(Ws.Range(Zelle).Text)
Case Else
DatName = "\" & DatNameSauber(Ws.Range(Zelle).Text)
End Select
.SaveAs Filename:=Pfad & DatName, FileFormat:=DatFormat
End With
End If
End Sub
Function DatNameSauber(DatName As String) As String
Dim i As Long
For i = 1 To Len(DatName)
Select Case Mid(DatName, i, 1)
Case Is = "|", ">", "
LG
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige