Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1132to1136
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 wird umbenannt

blatt wird umbenannt
joerg
Hallo,
habe noch ein (kleineres) Problem: Und zwar muss ich öfter mal Blätter als .txt exportieren / speichern. Wenn ich das aber tue, benennt Excel den tab / das Blatt automatisch um in den Dateinamen, den ich dem txt-file gegeben habe...
(Das ist recht nervig - die txt-files müssen nämlich immer denselben Namen haben, weil ich sie anderswo importiere, so dass ich wirklich gewzungen bin, die Tabs von Hand immer wieder zurückzubenennen...)
Ich verstehe auch wirklich nicht, warum Excel das überhaupt macht, was für ein Unsinn! Kann man das irgendwo ausschalten?
was für ein Unsinn!
25.01.2010 14:09:16
Rudi
Hallo,
kein Unsinn.
In .txt-Dateien gibt es ja gar keine Worksheets.
weil ich sie anderswo importiere

Wie? per VBA?--> Bezug auf Sheets(1)
Gruß
Rudi
AW: was für ein Unsinn!
25.01.2010 14:33:14
joerg
Doch Unsinn - mir ist ja völlig klar, dass txt-dateien keine Worksheets unterstützen, ich will ja auch nix weiter als eben das aktive Blatt in ein txt-file speichern / exportieren -
Dass Excel dann das Worksheet umbenennt, weil dieses dann 'nicht mehr zu meinem Workbook gehört' (oder so) finde ich einfach unsinnig.
Nicht per VBA übrigens, sondern in ein InDesign-Dokument...
Gibt es vielleicht per VBA-Script eine Lösung, um die Daten zu exportieren ohne das Blatt umzubenennen?
Anzeige
AW: blatt wird umbenannt
25.01.2010 14:13:41
Tino
Hallo,
ich nehme mal an Du machst dies über speichern unter, oder?
Dann ist die Datei nicht mehr Deine Excel- Datei.
Mach es z. Bsp. so, kopier die Tabelle als neue Arbeitsmappe und speichere diese als Textdatei,
damit sollte die Excel- Datei so bleiben.
Gruß Tino
AW: blatt wird umbenannt
25.01.2010 14:34:23
joerg
*stöhn* Wie uuumstäändlich... zumal ich das regelmässig und ziemlich oft machen muss... aber gut, wahrscheinlich geht's eben nicht anders. :) Danke!
AW: blatt wird umbenannt
25.01.2010 14:42:23
Tino
Hallo,
Du kannst es auch mittels Button und einem kleinen VBA Code machen.
Sub Makro1()
Dim sZiel As String
Dim oWB As Workbook
sZiel = Application.GetSaveAsFilename("test", "Textdateien (*.txt), *.txt")
If sZiel  CStr(False) Then
Application.ScreenUpdating = False
Set oWB = Sheets("Tabelle1").Copy
oWB.SaveAs Filename:=sZiel, FileFormat:=xlUnicodeText, CreateBackup:=False
oWB.Close False
Application.ScreenUpdating = True
End If
End Sub
Gruß Tino
Anzeige
Korrektur ...
25.01.2010 14:44:57
Tino
Hallo,
so ist es besser.
Sub Makro1()
Dim sZiel As String
Dim oWB As Workbook
sZiel = Application.GetSaveAsFilename("test", "Textdateien (*.txt), *.txt")
If sZiel  CStr(False) Then
Application.ScreenUpdating = False
Sheets("Tabelle1").Copy
Set oWB = ActiveWorkbook
oWB.SaveAs Filename:=sZiel, FileFormat:=xlUnicodeText, CreateBackup:=False
oWB.Close False
Application.ScreenUpdating = True
End If
End Sub
Gruß Tino
AW: Korrektur ...
25.01.2010 17:37:39
joerg
Wow, super, das funktioniert! Könnte man es noch irgendwie hinkriegen, dass gar nicht erst die Dialogbox kommt, sondern immer einfach unter dem Namen ('test.txt') gespeichert wird, so dass die schon vorhandene Datei auch ohne Nachfragen überschrieben wird? Das wäre optimal...
Vielen Dank! :)
Anzeige
AW: Korrektur ...
25.01.2010 17:43:39
joerg
Eine Sache fällt mir noch ein: Und zwar ist die data-merge-funktion in InDesign etwas dämlich gemacht, so dass ich in meinen Excel-Tabellen eine Hilfs-Zeile brauche, nämlich Zeile 1. Die ist in Excel ausgeblendet, ich brauche sie aber in InDesign. Zeile 2 wiederum enthält Spaltenüberschriften, die ich in InDesign eigentlich nicht brauche... Könnte man irgendwie dafür sorgen, dass nur die Zeilen 1 und 3-n aus der Tabelle in das textfile geschrieben werden? Also alles bis auf Zeile 2?
müsste so gehen
25.01.2010 17:45:11
Tino
Hallo,
so müsste im Odner der Exceldatei die TxT Datei ohne Rückfrage erstellt werden.
Sub Makro1()
Dim sZiel As String
Dim oWB As Workbook
Dim strPath As String
sZiel = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
sZiel = sZiel & "Meine Textdatei.txt" 'Dateiname
If sZiel  CStr(False) Then
With Application
.ScreenUpdating = False
.DisplayAlerts = False
Sheets("Tabelle1").Copy
Set oWB = ActiveWorkbook
oWB.SaveAs Filename:=sZiel, FileFormat:=xlUnicodeText, CreateBackup:=False
oWB.Close False
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
End Sub
Gruß Tino
Anzeige
AW: müsste so gehen
25.01.2010 18:01:10
joerg
Jo, klappt! noch eine letzte Kleinigkeit, kann man irgendwie statt dem ganzen Workbook nur Bereiche davon speichern? Nicht nur dass, was ich oben schon geschrieben hatte, sondern es wäre auch super wenn die momentane Filterung berücksichtigt würde, also eigentlich, wenn nur das gespeichert werden würde, was grad auch angezeigt wird... geht das?
AW: müsste so gehen
25.01.2010 18:15:58
Tino
Hallo,
dafür müssen wir ein klein wenig mehr machen.
Müsste funktionieren.
Sub Makro1()
Dim sZiel As String
Dim oWB As Workbook
Dim rngQuelle As Range
Dim strPath As String
sZiel = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
sZiel = sZiel & "Meine Textdatei.txt" 'Dateiname
If sZiel  CStr(False) Then
With Application
.ScreenUpdating = False
.DisplayAlerts = False
'Tabellenname anpassen hier Tabelle1
Set rngQuelle = ThisWorkbook.Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeVisible)
Set oWB = Workbooks.Add(Template:=1)
rngQuelle.Copy oWB.Sheets(1).Cells(1, 1)
oWB.SaveAs Filename:=sZiel, FileFormat:=xlUnicodeText, CreateBackup:=False
oWB.Close False
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
End Sub
Gruß Tino
Anzeige
AW: müsste so gehen
25.01.2010 18:24:56
joerg
Naja, so halb - die weggefilterten Zeilen werden nicht exportiert.... dafür werden, glaube ich, auch alle leeren Zeilen mitexportiert... Jedenfalls ist das txt-file, das vorher 24 KB gross war, 47MB gross, und es hat darin viel, viiiiel leeren Platz... :)
AW: müsste so gehen
25.01.2010 18:35:52
Tino
Hallo,
dann stimmt was mit Deiner Tabelle nicht oder ist nicht sauber aufgebaut.
Können wir die letzte Zeile anhand einer Referenzspalte festmachen?
Müsste so funktionieren.
Option Explicit
Sub Makro1()
Dim sZiel As String
Dim oWB As Workbook
Dim rngQuelle As Range
Dim strPath As String
Dim booVisible As Boolean
Dim lngLetzte As Long
sZiel = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
sZiel = sZiel & "Meine Textdatei.txt" 'Dateiname
If sZiel  CStr(False) Then
With Application
.ScreenUpdating = False
.DisplayAlerts = False
'Tabellennamen anpassen
With ThisWorkbook.Sheets("Tabelle1")
'hier Referenzspalte anpassen, 1=Sp. A ; 2 = Sp. B usw... ***********************
lngLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngQuelle = .Range("A1", .Cells(lngLetzte, .Columns.Count))
booVisible = .Rows(2).Hidden
.Rows(2).Hidden = True
Set rngQuelle = rngQuelle.SpecialCells(xlCellTypeVisible)
Set oWB = Workbooks.Add(Template:=1)
rngQuelle.Copy oWB.Sheets(1).Cells(1, 1)
oWB.SaveAs Filename:=sZiel, FileFormat:=xlUnicodeText, CreateBackup:=False
oWB.Close False
.Rows(2).Hidden = booVisible
End With
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
End Sub

Gruß Tino
Anzeige
AW: müsste so gehen
25.01.2010 18:42:56
joerg
Hm, das kapier ich nicht so ganz - die letzte Zeile anhand einer Referenzspalte?
Also der Teil hier:
 lngLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngQuelle = .Range("A1", .Cells(lngLetzte, .Columns.Count))

Wie müsste ich den anpassen?
AW: müsste so gehen
25.01.2010 18:57:46
Tino
Hallo,
ja um diese Zeilen geht es.
lngLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Also .Rows.Count ist die letzte Zeile, die 1 die Spalte also Spalte A. (2 wäre Spalte B usw.)
Es wird also von der letzen Zelle in Spalte A nachgesehen wo der letzte Eintrag in Spalte A steht.
Gruß Tino
Anzeige
ach Deine Zeile 2 habe ich noch nicht ...
25.01.2010 18:22:59
Tino
Hallo,
Sub Makro1()
Dim sZiel As String
Dim oWB As Workbook
Dim rngQuelle As Range
Dim strPath As String
Dim booVisible As Boolean
sZiel = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
sZiel = sZiel & "Meine Textdatei.txt" 'Dateiname
If sZiel  CStr(False) Then
With Application
.ScreenUpdating = False
.DisplayAlerts = False
With ThisWorkbook.Sheets("Tabelle1")
booVisible = .Rows(2).Hidden
.Rows(2).Hidden = True
Set rngQuelle = .Cells.SpecialCells(xlCellTypeVisible)
Set oWB = Workbooks.Add(Template:=1)
rngQuelle.Copy oWB.Sheets(1).Cells(1, 1)
oWB.SaveAs Filename:=sZiel, FileFormat:=xlUnicodeText, CreateBackup:=False
oWB.Close False
.Rows(2).Hidden = booVisible
End With
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
End Sub
Gruß Tino
Anzeige
AW: ach Deine Zeile 2 habe ich noch nicht ...
25.01.2010 18:55:37
joerg
Ah, alles klar, es lag an den Formaten... habe jetzt die formate der unteren x-millionen leeren zellen gelöscht, jetzt funktioniert es wie es soll...
Jedenfalls fast: Das mit zeile 1 und Zeile 2 ist noch nicht ganz richtig, im Text-file landet nämlich keine von beiden. Es ist aber ja so, dass ich Zeile 2 für die Anzeige brauche, nicht im txtfile, zeile 1 genau andersrum, die soll exportiert werden, ist aber ausgeblendet...
AW: ach Deine Zeile 2 habe ich noch nicht ...
25.01.2010 18:58:31
joerg
Alles klar, hab's selbst hingekriegt, mit .Rows(1).Hidden...
Vielen Dank für Deine grosse Hilfe, jetzt ist es wirklich perfekt! :)
AW: ach Deine Zeile 2 habe ich noch nicht ...
25.01.2010 19:04:40
Tino
Hallo,
ok. habe verstanden das nur Zeile 2 ausgeblendet werden muss.
Mit diesem Code wird Zeile 2 ausgeblendet und Zeile 1 eingeblendet,
danach wird alles zurückgestellt wie es war.
Sub Makro1()
Dim sZiel As String
Dim oWB As Workbook
Dim rngQuelle As Range
Dim strPath As String
Dim booVisible(1) As Boolean
sZiel = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
sZiel = sZiel & "Meine Textdatei.txt" 'Dateiname
If sZiel  CStr(False) Then
With Application
.ScreenUpdating = False
.DisplayAlerts = False
With ThisWorkbook.Sheets("Tabelle1")
'Zeile 1 einblenden
booVisible(0) = .Rows(1).Hidden
.Rows(1).Hidden = False
''Zeile 2 ausblenden
booVisible(1) = .Rows(2).Hidden
.Rows(2).Hidden = True
Set rngQuelle = .Cells.SpecialCells(xlCellTypeVisible)
Set oWB = Workbooks.Add(Template:=1)
rngQuelle.Copy oWB.Sheets(1).Cells(1, 1)
oWB.SaveAs Filename:=sZiel, FileFormat:=xlUnicodeText, CreateBackup:=False
oWB.Close False
'Zeile 1 Visible zurückstellen
.Rows(1).Hidden = booVisible(0)
'Zeile 2 Visible zurückstellen
.Rows(2).Hidden = booVisible(1)
End With
.ScreenUpdating = True
.DisplayAlerts = True
End With
End If
End Sub
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige