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

Tabellenblattnamen

Tabellenblattnamen
Jack
Liebe Gemeinde
ich hab grad mal wieder ein kleines logisches Problem welches sich folgendermaßen darstellt.
Ich hole mir über einen Import ein WS in mein WB
in diesem Sheet ist in einer Zelle ein Kürzel welches aus Zahlen und Buchstaben besteht.
exemplarisch "1.01.01 Feldversuch"
im weiteren werden aus diesem Kürzel die zahlen ausgelesen und zu dem Tabellenblattnamen "gemacht"
in dem Fall dann "1.01.01"
Das funktioniert auch wunderbar ABER
wenn ich erneut gleiches Blatt Importiere fühlt sich Mr. Office gestört und benennt das Tabellenblatt mit vollem Namen
hier dann "1.01.01 Feldversuch"
bei erneutem import kommt dann
" 1.01.01 Feldversuch (2)"
soweit so gut.
Ich möchte aber nur die Zahlenkombination UND einen Index. sprich
"1.01.01"
"1.01.01 (2)"
"1.01.01 (3)" usw.
Meine Ansätze mit for each ws in wb
sowie do while sind (Mangels Kenntnis gescheitert)
Ich wäre sehr über einen kreativen Lösungsansatz dankbar.
Und man möge mir vergeben falls ich was übersehen habe, aber m.E. gabs dazu noch nix im Forum
lg

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabellenblattnamen
18.10.2011 16:59:27
Sheldon
Hallo Jack,
ich nehme an, du benutzt ein Makro für den Import? Dann lad doch bitte mal eine Beispieldatei mit dem Makro hoch oder poste zumindest den Code, sonst werden wir dir wohl nicht helfen können.
Gruß
Sheldon
AW: Tabellenblattnamen
18.10.2011 17:06:33
Jack
Aber gern doch =)

Private Sub CommandButton8_Click()
Dim oFileDialog As FileDialog
Dim S As String, T As String, blattname As String
Dim wScriptNet
Dim Datei As String, wname As String
Dim Zelle As Range
On Error Resume Next
Set oFileDialog = Application.FileDialog(msoFileDialogFilePicker)
With oFileDialog
.Title = "Wählen Sie bitte die Datei aus!"
.ButtonName = "Übernehmen"
.InitialFileName = "\\.....\......"
.Show
T = .SelectedItems(1)
End With
If T = "" Then
MsgBox "Keine Datei ausgewählt"
Exit Sub
End If
Workbooks.Open Filename:=T
wname = ActiveWorkbook.name
ActiveSheet.Select
ActiveSheet.Copy before:=Workbooks("RFPBlanko.xlsm").Sheets(1)
Workbooks(wname).Close SaveChanges:=False
DisplayAlerts = True
With ActiveSheet
.Cells(1, 1).Value = Worksheets("Deckblatt").Cells(3, 3).Value
.Cells(2, 1).Value = Worksheets("Deckblatt").Cells(4, 3).Value
.Cells(5, 2).Value = ""
End With
With ActiveSheet
blattname = .Cells(4, 2).Value
.Cells(4, 2).Select
blattname = Left(blattname, InStr(1, blattname, " "))
End With
-------------------------------------------------Ab hier ist der "kritische Bereich"
anderenamen = Worksheet.name
i = 1
Do While anderenamen = blattname
For Each Worksheet In Workbook
anderenamen = Worksheet.name
blattname = blattname & " " & i
Next
i = i + 1
Loop
ActiveSheet.name = blattname
End Sub

ist zugegebenermaßen etwas kryptisch
aber ich hab schon mehrfach was versucht zu ändern..
und danke für die angebotene Hilfe
Anzeige
AW: Tabellenblattnamen
18.10.2011 17:11:08
Jack
Nachtrag es ist excel 2010 nicht 2002 -.-
AW: Tabellenblattnamen
18.10.2011 17:40:51
Sheldon
Hallo Jack,
versuchs mal mit dieser Änderung in deinem Code. Sollte klappen :o)

Private Sub CommandButton8_Click()
Dim oFileDialog As FileDialog
Dim S As String, T As String, blattname As String
Dim wScriptNet
Dim Datei As String, wname As String
Dim Zelle As Range
Dim oSh As Worksheet, i As Integer, vglName As String
On Error Resume Next
Set oFileDialog = Application.FileDialog(msoFileDialogFilePicker)
With oFileDialog
.Title = "Wählen Sie bitte die Datei aus!"
.ButtonName = "Übernehmen"
.InitialFileName = "\\.....\......"
.Show
T = .SelectedItems(1)
End With
If T = "" Then
MsgBox "Keine Datei ausgewählt"
Exit Sub
End If
Workbooks.Open Filename:=T
wname = ActiveWorkbook.Name
ActiveSheet.Select
ActiveSheet.Copy before:=Workbooks("RFPBlanko.xlsm").Sheets(1)
Workbooks(wname).Close SaveChanges:=False
DisplayAlerts = True
With ActiveSheet
.Cells(1, 1).Value = Worksheets("Deckblatt").Cells(3, 3).Value
.Cells(2, 1).Value = Worksheets("Deckblatt").Cells(4, 3).Value
.Cells(5, 2).Value = ""
End With
blattname = Left(Cells(4, 2).Value, InStr(1, Cells(4, 2).Value, " "))
i = 1
For Each oSh In Worksheets
If InStr(1, oSh.Name, " ") > 0 Then
vglName = Left(oSh.Name, InStr(1, oSh.Name, " "))
Else
vglName = oSh.Name
End If
If vglName = blattname Then i = i + 1
Next oSh
If i > 1 Then
ActiveSheet.Name = blattname & " (" & i & ")"
Else
ActiveSheet.Name = blattname
End If
End Sub
Gruß
Sheldon
Anzeige
AW: Tabellenblattnamen
19.10.2011 09:04:38
Jack
Hey Sheldon
danke für die Änderung und deine Mühe
Sie funktioniert auch weitestgehend ganz gut *smile
einzig beim ersten laden generiert er schon die (2) dahinter
vermutlich da i gleich beim ersten mal "addiert" wird..
Gibt es die Möglichkeit das man sozusagen beim ersten Import den "index" weg lässt?
AW: Tabellenblattnamen
19.10.2011 10:23:19
Jack
So
es ist eigentlich trivial.
die Lösung brachte mir die änderung von
i=1 auf i=0
warum allerding der index mit (1) nicht "reingeschrieben" wird, ist mir nicht klar.
(btw.. so wollte ich es aber )
also vielen Dank Sheldon
warum der Index (1) nicht angelegt wird
19.10.2011 11:07:30
Sheldon
Hallo Jack,
freut mich, dass du den i-Fehler korrigieren konntest. Ist mir beim Testen gar nicht aufgefallen!
Der Index (1) wird nicht reingeschrieben, weil über die For Each ... Next-Schleife zunächst ja ermittelt wird, wie oft der Tabellenblattname ohne Index bereits existiert. Jedes Mal, wenn der Blattname gefunden wird, wird i um eins hochgezählt. In der dann folgenden If-Schleife wird i hinter den Blattnamen angehängt, wenn i > 1 ist. Ist i also kleiner, wird auch kein Index hinten drangehängt.
Gruß
Sheldon
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige