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

Speichern als - Blattnamenänderung verhi

Speichern als - Blattnamenänderung verhi
18.05.2020 07:48:38
Daniel
Hallo Zusammen,
ich speichere ein aktives Arbeitsblatt per Makro im Format TXT mit Tab, was auch sehr gut funktioniert.

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Users\xxx\Downloads\" & "imp.txt", FileFormat:=xlText,   _
_
_
_
_
_
CreateBackup:=False, Local:=True
Application.DisplayAlerts = True

Ich erzeuge den Dateinamen dynamisch, je nach Tag - klappt perfekt.
Mein Problem ist, dass sich der Name des Tabellenblattes auch immer mit dem Speichern ändert, was ich gerne verhindern möchte. Gibt es hierzu eine Ergänzung zu meinem Quellcode?
Ich habe bislang keine Lösung gefunden, um zu verhindern, dass der Blattname geändert wird.
Ich habe mir in zwei unterschiedlichen Lösungsansätzen behelfsmäßig geholfen:
Ansatz 1 - ich erstelle erst eine Kopie des Arbeitsblattes, speichere es und lösche dann die Kopie
Ansatz 2 - ich ändere den Namen des Reiters
Beide Lösungen funktionieren, entsprechen aber nicht einer "vernünftigen" Lösung.

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 08:07:06
Oberschlumpf
Hi Daniel,
und wo ist der Befehl, der Blattname durch das Speichern der Datei geändert wird?
Dein gezeigter Code speichert doch nur die XL-Datei als TXT-Datei.
Sollte ich etwas übersehen haben oder es (noch) nicht kennen, könnte vielleicht eine Bsp-Datei von dir, mit der beim Speichern als TXT das Gleiche passiert, hilfreich sein.
Ciao
Thorsten
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 08:14:51
Daniel
Hier der Gesamte Code
Sub SaveAsTxtTab()
'das heutige Datum im Format TagMonat ohne Jahr und irgendwelche Trennzeichen
Datum = Format(Date, "DDMM")
On Error GoTo ErrorHandler
Application.CutCopyMode = False
ChDir "C:\Users\Daniel\Downloads\" 'Anpassen, muss bereits existieren
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Users\Daniel\Downloads\" & Datum & "_imp.txt",  _
FileFormat:=xlText, _
CreateBackup:=False, Local:=True
Application.DisplayAlerts = True
ErrorHandler:
If Err.Number  0 Then MsgBox "Fehler Nr. " & Err.Number & vbCrLf _
& Err.Description, vbCritical + vbOKOnly, "Das ging schief ..."
If ff > 0 Then Close #ff
End Sub

Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 08:41:55
Oberschlumpf
Hi Daniel,
schade, keine Bsp-Datei von dir.
Ok, ich seh noch immer keinen Befehl, der den Blattnamen ändert.
Ciao
Thorsten
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 09:21:56
Daniel
Hi Thorsten
der Blattname wird beim Ausführen des Befehls SaveAs geändert.
Ist zumindest bei Excel 2016 so.
Gruß Daniel (nicht der der gefragt hat)
allerdings gibt es da unterschiede
18.05.2020 09:27:54
Daniel
bei Text - Tabstopp-getrennt wird der Blattname vom SaveAs an den Dateinamen angeglichen
bei Text - MSDos bleibt der ursprüngliche Tab-Name erhalten.
Gruß Daniel
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 09:29:55
Oberschlumpf
Hi Daniel (der Andere ;-) )
danke für den Tipp.
a) all das wusst ich echt noch nicht
b) eine Bsp-Datei vom fragenden Daniel wäre weiterhin eine gute Option, da er ja noch nicht bestätigt hat, dass irgdwas geholfen hat
Ciao
Thorsten
Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 09:34:01
Daniel
naja, da hier keine Daten bearbeitet werden, ist eine Beispieldatei unnötig, der Code reicht.
den Speicherpfad musst du dir sowieso anpasssen und es gibt ja auch einige Forumsteilnehmer, die Dateien mit Makros aus Angst vor schadsoftware grundsätzlich nicht öffen.
Gruß Daniel
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 09:52:09
Oberschlumpf
na ja, ich erkenne wohl, dass keine Daten bearbeitet werden; zumindest in dem Teil des Codes, der hier gezeigt wird.
Was ich aber nicht sehe, ist eben die Datei des Users.
Und da kann ja genau in dieser Datei irgdwo ein Fehler stehen, den der User als solchen nicht sieht oder übersieht.
Deswegen finde ich, dass eine von mir selbst erstellte Datei nicht hilfreich sein muss, weil es ist ja meine Datei, die nicht mit der Datei des Users übereinstimmen muss.
Und wenn ich um eine Bsp-Datei - mit - Makro(s) bitte, verlangt doch niemand, dass die "ängstlichen" Antworter diese Datei öffnen ;-)
Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 10:02:02
Daniel
Du brauchst die Datei nicht wirklich. Mit der "richtigen" Datei arbeite ich noch nicht mal, sondern nur mit einer Testdatei.
Spalte A bis E , Zeile 1 bis 20 ;
einfach nur irgendwas eintragen und das Makro ausführen.
Es liegt nicht an den Daten, sondern tatsächlich an der SaveAs Methode.
Das "Problem" passiert sogar, wenn man das Ganze nicht per Makro, sondern über das Excel eigene Speichern unter Menü macht.
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 10:56:47
Daniel
Wie gesagt, die Namensänderung des Blattes macht das SaveAs.
das kannst du nicht verhindern.
Allerdings macht das SaveAs das nicht bei allen Fileformaten, sondern nur bei bestimmten, sogar bei den Text-Formaten gibt es hier unterschiede:
- Tab-Getrennt: Tab-Name wird geändert
- MS-DOS: Tab-Name bleibt gleich
dh ggf kannst du das Problem damit lösen, dass du ein anderes Speicherformat verwendest (wenn das Zielsystem der Text-Datei damit umgehen kann)
ich würde wie gesagt, deine erste Lösungsvariante favorisieren (Blatt in neue Datei kopieren und diese Speichern)
Das braucht nur 2 zusätzliche Programmzeilen und ist damit deutlich einfacher als das von dir gezeigte Schreiben der einzelnen Werte per Schleife mit WRITE.
Gruß Daniel
Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 09:37:50
Daniel
hier der fragende Daniel ( Mensch ist das verwirrend) :-)
Wie es Daniel schon gesagt hat, ändert das SaveAs den Blattnamen;
allerdings kann ich nicht ausweichen auf MsDos TXT da die TXT mit Tab weiter verarbeitet wird.
Ich glaube, ich muss wirklich den umständlichen Weg gehen und das Blatt in eine andere Datei kopieren.
Einen anderen Ansatz versuche ich gerade hiermit:
Mit CSV klappt das wunderbar ; mal schauen ob ich das für txt mit tab umstricken kann.
Sub SaveAsCSV()
Dim DstFileName As String, DstPfad As String
Dim Delimiter As String
Dim strZe As String
Dim lRow As Long, lCol As Integer
Dim Ze As Long, Sp As Integer
Dim ff As Integer
'das heutige Datum im Format TagMonat ohne Jahr und irgendwelche Trennzeichen
Datum = Format(Date, "DDMM")
'MsgBox Datum
On Error GoTo ErrorHandler
DstPfad = "C:\Users\Daniel\Downloads\" 'Anpassen, muss bereits existieren
DstFileName = DstPfad & "dhl" & Datum & ".csv" 'Anpassen - Dateiname jetzt dhl(Datum aus Tag/ _
Monat).csv
Delimiter = ";"
With ActiveSheet
lRow = .Cells.Find(what:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lCol = .Cells.Find(what:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious). _
Column
ff = FreeFile
Open DstFileName For Output As #ff
'Zeile für Zeile lesen und schreiben ...
For Ze = 1 To lRow
For Sp = 1 To lCol - 1
strZe = strZe & .Cells(Ze, Sp) & Delimiter
Next Sp
strZe = strZe & .Cells(Ze, Sp)
Print #ff, strZe
strZe = ""
Next Ze
End With
ErrorHandler:
If Err.Number  0 Then MsgBox "Fehler Nr. " & Err.Number & vbCrLf _
& Err.Description, vbCritical + vbOKOnly, "Das ging schief ..."
If ff > 0 Then Close #ff
End Sub

Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 09:32:40
Daniel
Genau da ist ja das Problem;
eigentlich ändere ich den Blattnamen ja gar nicht.
Ich speichere das Excel Blatt als TXT mit Tab und verliere dadurch den Blattnamen.
Und nicht nur das;
auch muss ich dann wieder Speichern als Excel mit Makros anwählen, wenn ich das Workbook speichern möchte.
Und genau das will ich eigentlich verhindern.
Ich bastel jetzt schon an einer anderen Lösung und kopiere mein Blatt in eine neue Datei und erstelle von dort meine TXT Datei.
Ich wollte eigentlich keine hundert Zwischenschritte machen, die m.E. unnötig sind;
aber anscheinend gibt es keine andere Lösung.
Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 09:47:28
Daniel
HI
wie ich schon schrieb:
dein Weg, die Daten erst in eine neue Mappe zu kopieren und diese als Text zu speichern ist die beste Methode, auch wenn es etwas umständlich aussieht.
den hauptsächlichen Grund hatte ich in meinem ersten Beitrag an dich genannt.
Das ändern des Blattnamens kann man ggf. mit einem anderen Fileformat verhindern, weil nicht bei allen Fileformaten dieser geändert wird. Es gibt auch Textformate (MS-DOS), bei denen der Blattname erhalten bleibt.
aber das zweite Problem kannst du nicht lösen.
SaveAs ändert den Dateityp und wenn du die Datei dann wieder normal speichern willst, musst du eben erneut mit SaveAs arbeiten.
SaveCopyAs funktioniert auch nicht, weil SaveCopyAs eine 1:1-Kopie der Datei erstellt und somit keine Änderung des FileFormats zulässt.
wie gesagt, deine von dir gefundene Variante 1 ist der beste Weg, die Probleme zu vermeiden.
ich zumindest kenne keinen besseren und mache das auch immer so.
Gruß Daniel
Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 10:04:16
Daniel
Hallo Daniel,
das dachte ich mir fast ;
ich habe jetzt folgendes probiert und es scheint zu funktionieren.
Muss später nur noch schauen, ob die Textdatei richtig rauskommt.
SaveAsTXTneu()
Dim DstFileName As String, DstPfad As String
Dim Delimiter As String
Dim strZe As String
Dim lRow As Long, lCol As Integer
Dim Ze As Long, Sp As Integer
Dim ff As Integer
'das heutige Datum im Format TagMonat ohne Jahr und irgendwelche Trennzeichen
Datum = Format(Date, "DDMM")
'MsgBox Datum
On Error GoTo ErrorHandler
DstPfad = "C:\Users\Daniel\Downloads\" 'Anpassen, muss bereits existieren
DstFileName = DstPfad & Datum & "_imp.txt" 'Anpassen
'Delimiter = ";"
Delimiter = vbTab
With ActiveSheet
lRow = .Cells.Find(what:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lCol = .Cells.Find(what:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious). _
Column
ff = FreeFile
Open DstFileName For Output As #ff
'Zeile für Zeile lesen und schreiben ...
For Ze = 1 To lRow
For Sp = 1 To lCol - 1
strZe = strZe & .Cells(Ze, Sp) & Delimiter
Next Sp
strZe = strZe & .Cells(Ze, Sp)
Print #ff, strZe
strZe = ""
Next Ze
End With
ErrorHandler:
If Err.Number  0 Then MsgBox "Fehler Nr. " & Err.Number & vbCrLf _
& Err.Description, vbCritical + vbOKOnly, "Das ging schief ..."
If ff > 0 Then Close #ff
End Sub
pre>

Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 10:04:53
Daniel

Sub SaveAsTXTneu()
Dim DstFileName As String, DstPfad As String
Dim Delimiter As String
Dim strZe As String
Dim lRow As Long, lCol As Integer
Dim Ze As Long, Sp As Integer
Dim ff As Integer
'das heutige Datum im Format TagMonat ohne Jahr und irgendwelche Trennzeichen
Datum = Format(Date, "DDMM")
'MsgBox Datum
On Error GoTo ErrorHandler
DstPfad = "C:\Users\Daniel\Downloads\" 'Anpassen, muss bereits existieren
DstFileName = DstPfad & "dhl" & Datum & "_imp.txt" 'Anpassen - Dateiname jetzt dhl(Datum aus  _
Tag/Monat).csv
'Delimiter = ";"
Delimiter = vbTab
With ActiveSheet
lRow = .Cells.Find(what:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lCol = .Cells.Find(what:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious). _
Column
ff = FreeFile
Open DstFileName For Output As #ff
'Zeile für Zeile lesen und schreiben ...
For Ze = 1 To lRow
For Sp = 1 To lCol - 1
strZe = strZe & .Cells(Ze, Sp) & Delimiter
Next Sp
strZe = strZe & .Cells(Ze, Sp)
Print #ff, strZe
strZe = ""
Next Ze
End With
ErrorHandler:
If Err.Number  0 Then MsgBox "Fehler Nr. " & Err.Number & vbCrLf _
& Err.Description, vbCritical + vbOKOnly, "Das ging schief ..."
If ff > 0 Then Close #ff
End Sub

Anzeige
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 08:08:26
Daniel
Hi
Bleib bei Variante 1.
Damit vermeidest du ein anderes Problem.
Mit dem SaveAs wird deine Exceldat selbst zu Textdatei.
Dh wenn du sie danach wieder normal speichern willst, musst du wieder SaveAs mit einem Excelformat verwenden und kannst nicht einfach per Save speichern.
Gruß Daniel
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 08:13:07
Oberschlumpf
Hi,
der andere daniel brachte mich nohc auf diese Idee:
Oder du verwendest gleich diesen Befehl:
ActiveWorkbook.SaveCopyAs Filename:="C:\Users\xxx\Downloads....
Hilfts denn?
Ciao
Thorsten
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 08:16:55
Daniel
Nein, SaveCopyAs war auch erst meine Idee ;
aber da bekomme ich bei FileFormat einen Fehler.
Ich vermute, dass er bei Copy nicht als Text mit Tab speichern will/kann.
AW: Speichern als - Blattnamenänderung verhi
18.05.2020 08:17:10
Daniel
Hi
Soweit mir bekannt ist, kann man mit SaveCopyAs aber immer nur im selben Format speichern, also keine txt-Datei erzeugen.
Gruß Daniel

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige