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

Frage Code-Änderung

Frage Code-Änderung
10.02.2016 20:22:35
Guesa
Hallo Forum
Dank Eurer Hilfe habe ich meine Arbeitsdatei vollenden können und läuft wunderbar. Im täglichen Gebrauch gefällt mir eine Sache nicht so ganz, da sich alle abgespeicherten Dateien in einem Ordner befinden, ist halt recht unübersichtlich. Könnte mir jemand folgenden Code so umschreiben, oder zumindest einen Tip geben, dass aus Zelle P1 ein Ordner einmalig erstellt wird, der dann auch bei nachfolgenden Dateien erkannt wird das es diesen bereits gibt, dieser ist jetzt festgeschrieben, aus P2 soll dann der Dateiname (ist ja jetzt auch) erstellt werden. Es braucht auch keine Meldung erscheinen, das dieser Ordner bereits vorhanden ist. Ich hoffe das ich mich einigermaßen verständlich ausgedrückt habe. Hier mein bisheriger Code und schon mal ein Dankeschön für die Hilfe.
Sub Speichern()
Dim wb As Workbook
Dim strFileName As String
On Error GoTo ErrorHandler
Application.DisplayAlerts = False
With ThisWorkbook.Worksheets("BerStempel")
strFileName = .Range("P1") & "\" & .Range("P2") & ".xlsx"
'strFileName = .Range("B1") & "\" & .Range("C1") & ".xls"
End With
ActiveSheet.Copy
With ActiveWorkbook
.SaveAs strFileName, FileFormat:=51
'Oder als xls
'.SaveAs strFileName, FileFormat:=-4143
.Sheets(1).Shapes("speichern1").Delete
.Close True
End With
ErrorHandler:
If Err.Number > 0 Then MsgBox Err.Description, , "Fehler: " & Err.Number
Application.DisplayAlerts = True
Call Rech_Nr
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage Code-Änderung
11.02.2016 09:45:01
Herbert
Hallo,
zuerst musst du mal folgende Zeile ändern:
Deine Zeile: strFileName = .Range("P1") & "\" & .Range("P2") & ".xlsx"
Meine Zeile: strFileName = .Range("P1") & "-" & .Range("P2") & ".xlsm"
_________________________________^_______________^^^^
Dann verwende folgende 4 Zeilen, um deine AM zu speichern. Das "Shapes("speichern1")" wird mit ".Copy" zuerst in die Zwischenablage gesichert, dann wird sie gelöscht und die AM gespeichert ohne die "Shapes("speichern1")" und anschließend wird die "Shapes("speichern1")" mit ".Paste" wieder in deine aktive AM eingesetzt. Probiers mal!
ActiveSheet.Shapes("speichern1").Copy
ActiveSheet.Shapes("speichern1").Delete
ActiveWorkbook.SaveCopyAs strFileName
ActiveSheet.Paste
Servus

Anzeige
AW: Frage Code-Änderung
11.02.2016 10:16:12
Herbert
Sorry, aber meine Antwort war nicht ganz das, was du brauchst. Doch ist mir auch nicht ganz klar, was du eigentlich meinst. Vielleicht könntest du das noch mal etwas präzisieren. Eine BeispielAM wäre dabei sicher auch hilfreich.
Servus

AW: Frage Code-Änderung
14.02.2016 14:35:54
Guesa
Hallo Herbert
Aus P1 soll ein Ordner erstellt werden (Kundenname), aus P2 ein einzelnes Tabellenblatt (Kundenname, Datum usw.) in diesen Ordner speichern. Wenn ich nun ein zweites Tabellenblatt speichere mit gleichem Kundenname, dann automatisch in den Kundenordner.
Gruß
Guesa

AW: Frage Code-Änderung
11.02.2016 13:15:55
Rudi
Hallo,
Sub Speichern()
Dim wb As Workbook
Dim strFileName As String
On Error GoTo ErrorHandler
Application.DisplayAlerts = False
With ThisWorkbook.Worksheets("BerStempel")
Call OrdnerPruefen(.Range("P1"))
strFileName = .Range("P1") & "\" & .Range("P2")
End With
ActiveSheet.Copy
With ActiveWorkbook
.SaveAs strFileName, FileFormat:=51
'Oder als xls
'.SaveAs strFileName, FileFormat:=-4143
.Sheets(1).Shapes("speichern1").Delete
.Close True
End With
ErrorHandler:
If Err.Number > 0 Then MsgBox Err.Description, , "Fehler: " & Err.Number
Application.DisplayAlerts = True
Call Rech_Nr
End Sub

Sub OrdnerPruefen(s As String)
Dim fs As Object, t, i As Integer, f As String
Set fs = CreateObject("scripting.filesystemobject")
If Not fs.folderexists(s) Then
t = Split(s, "\")
f = t(0)
For i = 1 To UBound(t)
f = f & "\" & t(i)
If Not fs.folderexists(f) Then fs.createfolder (f)
Next i
End If
Set fs = Nothing
End Sub
Gruß
Rudi

Anzeige
AW: Frage Code-Änderung
11.02.2016 17:03:14
Herbert
Hallo Rudi,
dein Code bricht mit dem "Fehler 1004" in dieser Zeile (.SaveAs strFileName, FileFormat:=51) ab. Woran kann das liegen?
Servus

AW: Frage Code-Änderung
14.02.2016 14:24:25
Guesa
Hallo Rudi
Danke für Deine Hilfe, der Code von Dir läuft genauso wie ich es mir vorgestellt habe, und
entschuldige bitte die späte Rückmeldung, mich hat´s die letzten Tage dahingerafft.
Gruß
Guesa

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige