Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
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

Blatt in neue Excel

Blatt in neue Excel
10.01.2019 13:07:19
Holger
Hallo!
Beim Versuch einen Code aus dem Netz anzupassen, komme ich nicht weiter.
Höchst wahrscheinlich weil ich mir das zu einfach vorstelle.
Der Ursprungscode

Option Explicit
Sub ErstelleEXCEL()
Application.ScreenUpdating = False
ActiveSheet.Copy
Dim neuName As String
neuName = InputBox("Unter welchem Namen soll die Datei gespeichert werden?")
'Pfad anpassen "D:\?\
ActiveWorkbook.SaveAs Filename:="D:\Downloads\" & neuName & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
'Pfad anpassen "D:\?\
MsgBox " Die Datei wurde unter D:\Downloads\ " & neuName & " gespeichert !", vbibformation
Application.ScreenUpdating = True
End Sub

Meine Variante

Sub ErstelleEXCEL()
Application.ScreenUpdating = False
ActiveSheet.Copy
ActiveSheet.Name "_" & _
"Leistungsnachweis_" & ActiveSheet.Range("A10").Value & "_" & Format(Range("E5"), "mm-yy") & _
_
".xlsx", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
MsgBox " Die Datei wurde gespeichert !"
Application.ScreenUpdating = True
End Sub

Mit einem ähnlichen Weg konnte ich schon PDFs erstellen...
Etwas muss falsch sein, weil die Mappe mit neuem Blatt wird zwar erstellt,
aber Debugger erscheint mit:
"Laufzeitfehler 1004
anwendungs- oder objektdefinierter Fehler"
Markierung kommt bei:

ActiveSheet.Name "_" & _
"Leistungsnachweis_" & ActiveSheet.Range("A10").Value & "_" & Format(Range("E5"), "mm-yy") & _
_
".xlsx", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

Die Beispiele in den Recherchen helfen mir nicht 100pro weiter,
weil sie sich immer auf festgelegte Dateipfade und variable Namen beziehen.
Einen konkreten Dateipfad kann ich nicht verwenden,
da Speicherort = Projektabhängig und der Dateiname soll sich aus ActiveSheet.Name und Zellen selbst generieren.
Dateipfad darf sich aber auf die Ausgangsdatei beziehen.
Die erweiterte Lösung wird dann noch enthalten müssen, dass sich die Formeln aus den löschen und nur die Werte zum Zeitpunkt der Speicherung erhalten bleiben.
Auch hierzu schon massig gefunden. aber am umschreiben + integrieren hapert es
Sub Bereich_ersetzen(strAdresse As String)
Dim wS              As Worksheet
For Each wS In ActiveWorkbook.Windows(1).SelectedSheets
With wS.Range(strAdresse)
.Value = .Value
End With
Next wS
End Sub

Für andere Vorschläge bin natürlich dankbar !
Anbei noch die Probedateien
"1 - Abrechnung LNW blanko" MIT MAKRO
https://www.herber.de/bbs/user/126641.xlsm
oder ohne makros:
https://www.herber.de/bbs/user/126642.xlsx
Mit besten Grüßen
Holger

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blatt in neue Excel
10.01.2019 13:13:56
Rudi
Hallo,
Activesheet.Name = "_" & ....
Gruß
Rudi
AW: Blatt in neue Excel
10.01.2019 14:03:51
Holger
Grüße Rudi!
ok..
Option Explicit
Sub ErstelleEXCEL()
Application.ScreenUpdating = False
ActiveSheet.Copy
ActiveWorkbook.ActiveSheet.Name = Range("B6")
Application.GetSaveAsFilename ActiveSheet.Name = Range("B6") & "_Leistungsnachweis_" &  _
ActiveSheet.Range("A10").Value & Format(Range("E5"), "mm-yy") & ".xlsx"
MsgBox " Die Datei wurde gespeichert !"
Application.ScreenUpdating = True
End Sub
Das Das Dialogfenster zum Speichern unter/ Speichern als öffnet sich,
ich drücke speichern, aber er speichert nicht ab und der gewünschte Dateiname erscheint nicht im Fenster
In der "1 - Abrechnung LNW blanko" MIT MAKRO
https://www.herber.de/bbs/user/126641.xlsm
gibt es "erstelle PDF" mit fast dem selben weg...da funktioniert es einwandfrei
Anzeige
AW: Blatt in neue Excel
10.01.2019 14:44:20
Nepumuk
Hallo Holger,
teste mal:
Option Explicit

Sub ErstelleEXCEL()
    Dim strPath As String, strFileName As String
    Dim objFileDialog As FileDialog
    Application.ScreenUpdating = False
    ActiveSheet.Copy
    Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
    With ActiveSheet
        .Name = Range("B6").Value
        strFileName = .Name & "_Leistungsnachweis_" & _
            .Range("A10").Value & Format$(.Range("E5").Value, "mm-yy")
    End With
    With objFileDialog
        .FilterIndex = 1
        .InitialFileName = strFileName
        If .Show Then strPath = .SelectedItems(1)
    End With
    Set objFileDialog = Nothing
    If strPath <> vbNullString Then
        ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=xlOpenXMLWorkbook
        MsgBox " Die Datei wurde gespeichert !"
    End If
    Application.ScreenUpdating = True
End Sub

Gruß
Nepumuk
Anzeige
AW: Blatt in neue Excel
10.01.2019 16:06:51
Holger
Grüße Nepumuk!
Jawoll es lebt !!!!!!!!!! xD
Es wird sauber erstellt und gespeichert
Eine Bedingung und eine Frage kommen noch:
Bedingung
in den Zellen sind noch Formeln, die sich noch auf die Ursprungsdatei beziehen.
Die Daten für dieses Blatt werden aber aus der Ursprungsdatei gelöscht.
Also müssen die leider raus und nur die Werte speichern
Gefundener Vorschlag:
Dim wks As Worksheet
."dein Code"
'für jede Tabelle (muss in meinem Fall eigentlich nicht, sondern nur die active Tabelle)
For Each wks In ThisWorkbook.Worksheets
'für Zellbereich A1 bis H200
With wks.Range("A1:H200")
.Copy
.PasteSpecial Paste:=xlPasteValues
End With

Frage
was muss ich schreiben und wo integrieren, wenn ich im
"Speichern unter"-Dialogfenster erstmal den Dateipfad der Ursprungsdatei sehen möchte?
Also nur da wo die Urpsrungsdatei liegt

.Name = Range("B6").Value
strFileName = .Name & "_Leistungsnachweis_" & _
.Range("A10").Value & Format$(.Range("E5").Value, "mm-yy")
satt .Name setze ich WorkbookPath( "Ursprungsdateiname" ) ?
Anzeige
AW: Blatt in neue Excel
10.01.2019 16:16:15
Nepumuk
Hallo Holger,
teste mal:
Option Explicit

Sub ErstelleEXCEL()
    Dim strPath As String, strFileName As String
    Dim objFileDialog As FileDialog
    Application.ScreenUpdating = False
    ActiveSheet.Copy
    Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
    With ActiveSheet
        .Name = Range("B6").Value
        .UsedRange.Value = .UsedRange.Value
        strFileName = ThisWorkbook.Path & "\" & .Name & "_Leistungsnachweis_" & _
            .Range("A10").Value & Format$(.Range("E5").Value, "mm-yy")
    End With
    With objFileDialog
        .FilterIndex = 1
        .InitialFileName = strFileName
        If .Show Then strPath = .SelectedItems(1)
    End With
    Set objFileDialog = Nothing
    If strPath <> vbNullString Then
        ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=xlOpenXMLWorkbook
        MsgBox " Die Datei wurde gespeichert !"
    End If
    Application.ScreenUpdating = True
End Sub

Gruß
Nepumuk
Anzeige
AW: Blatt in neue Excel
10.01.2019 16:59:00
Holger
MEGA GUT!!!!!!!!
Funktioniert alles, wie gewünscht.
Mir ist bewusst, dass es viel Arbeit macht,
aber würdest du mir bitte eine Ausformulierung für die Zeilen zu schreiben ? zwecks Lernerfolg
RIESEN RIESEN DANK AUF JEDEN FALL FÜR DEINE BISHERIGE HILFE!!!!!
AW: Blatt in neue Excel
10.01.2019 17:33:13
Nepumuk
Hallo Holger,
das kostete mich viel Überwindung denn das mache ich nicht gerne.
Option Explicit

Sub ErstelleEXCEL()
    Dim strPath As String, strFileName As String
    Dim objFileDialog As FileDialog
    'Bildschirmaktualisierung ausschalten
    Application.ScreenUpdating = False
    'aktive Tabelle in neue Mappe kopieren
    ActiveSheet.Copy
    'FileDialog-Objekt erzeugen
    Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
    'Bezug auf die neue Tabelle erzeugen
    With ActiveSheet
        'Tabelle umbenennen
        .Name = Range("B6").Value
        'benutzen Bereich mit seinen Werten überschreiben damit werden auch Formeln mit ihren Werten überschrieben
        .UsedRange.Value = .UsedRange.Value
        'Dateiname erzeugen wobei ThisWorkbook.Path der Pfad der Mappe ist in der sich das Makro befindet
        strFileName = ThisWorkbook.Path & "\" & .Name & "_Leistungsnachweis_" & _
            .Range("A10").Value & Format$(.Range("E5").Value, "mm-yy")
    End With
    'Bezug auf das FileDialog-Objekt erzeugen
    With objFileDialog
        'Index des Dateifilters auf xlsx setzen
        'den Index kannst du im Speichern-unter Dialog sehen wenn du die Liste bei Dateityp aufklappst
        .FilterIndex = 1
        'voreingestellter Pfad und Dateiname
        .InitialFileName = strFileName
        'Show zeigt den Dialog an und liefert True zurück wenn auf "Speichern" geklick wurde bei "Abbrechen" False
        'SelectedItems ist die Liste der ausgewählten Dateien (wenn eine Mehrfachauswahl beim Öffnen zulässig ist)
        'beim Speichern kann nur der erste Index belegt sein
        If .Show Then strPath = .SelectedItems(1)
    End With
    'FileDialog-Objekt zerstören
    Set objFileDialog = Nothing
    'Wenn sich in der Variablen ein Pfad befindet
    If strPath <> vbNullString Then
        'aktive Mappe im ausgewählten Paft unter dem eingegebenen Namen speichern
        'xlOpenXMLWorkbook ist das xlsx-Format
        ActiveWorkbook.SaveAs Filename:=strPath, FileFormat:=xlOpenXMLWorkbook
        'Meldung ausgeben
        MsgBox " Die Datei wurde gespeichert !"
    End If
    'Bildschirmaktualisierung einschalten
    Application.ScreenUpdating = True
End Sub

Gruß
Nepumuk
Anzeige
AW: Blatt in neue Excel
10.01.2019 17:40:48
Holger
Nochmals vielen vielen Dank!
Dass das keinen Spaß macht, glaube ich dir gern!
Der Lerneffekt ist nun für mich aber noch größer!
Beste Grüßen
AW: Blatt in neue Excel
10.01.2019 15:18:23
Holger
Grüße Rudi!
ok..
Option Explicit
Sub ErstelleEXCEL()
Application.ScreenUpdating = False
ActiveSheet.Copy
ActiveWorkbook.ActiveSheet.Name = Range("B6")
Application.GetSaveAsFilename ActiveSheet.Name = Range("B6") & "_Leistungsnachweis_" &  _
ActiveSheet.Range("A10").Value & Format(Range("E5"), "mm-yy") & ".xlsx"
MsgBox " Die Datei wurde gespeichert !"
Application.ScreenUpdating = True
End Sub
Das Das Dialogfenster zum Speichern unter/ Speichern als öffnet sich,
ich drücke speichern, aber er speichert nicht ab und der gewünschte Dateiname erscheint nicht im Fenster
In der "1 - Abrechnung LNW blanko" MIT MAKRO
https://www.herber.de/bbs/user/126641.xlsm
gibt es "erstelle PDF" mit fast dem selben weg...da funktioniert es einwandfrei
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige