Frage von Zaleg, 20

Kann man mit VB in Excel gleichnamige Worksheets erstellen?

Ich schreibe zuzeit ein etwas größeres Skript von jemand anderen um. In dem Skript werden Hilfstabellen erzeugt für jede Mail in dem Ordner (Outlook) die alle den Namen "Help" haben. Was ich mich jetzt frage ist ob das so funktioniert und wenn es nicht funktioniert ob jemand eine Idee hat wie ich das umgehen kann. Codeschnipsel:

tempVar1 = ThisWorkbook.Sheets.Count
'Solange die Mails in Excel kopieren bis keine mehr vorhanden ist:
If intCount > 0 Then
For intCounter = 1 To intCount
'Anzahl der Mails zählen (myItem ist eine Variable für die Mail)
Set myItem = objFolder.Items(intCounter)
'Anhängen von Hilfstabelle(n) in Höhe von Anzahl der Mails
Worksheets.Add After:=Worksheets(tempVar1)
Worksheets(tempVar1 + 1).name = "Help"
'als .TXT in \temp kopieren
myItem.SaveAs ThisWorkbook.Path & "\temp.txt", olTXT
Close
Expertenantwort
von Iamiam, Community-Experte für Excel, 15

was Du machen kannst: per VBA eine laufende Nummer, zB 01,. 02 etc an den Namen anhängen. Du kannst diese Nr per Textauflösung auch abfragen, -allerdings recht kompliziert- und dann immer die höchste schon/noch vorhandene Nummer als Referenz nehmen

Die Abfrage müsste nach dem Schema erfolgen (Unterschleife);

For each WS in Activeworkbook.woorksheets()

if  isnumeric(right(ws.name, 2) and   isnumeric(right((ws +1).name, 2) and (right((ws + 1).name, 2) > right(ws.name, 2)  then VarMax = (ws + 1).name

'sollte als einzeilige if-then-Variante gehen, also ohne endif

next ws

ist nur mal so eine Idee, musst Du selbst noch ausarbeiten, zB könnte es sein, dass explizit noch der Index genannt werden muss, aber vom Prinzip her sollte das gehen. Endziffern in jedem Fall 2-stellig, oder, wenn Max >99, sogar ALLE 3-stellig nehmen, damit das richtig klappt.
Evtl noch Fehlerbehandlung für die höchste Nummer

übrigens Thisworkbook ist dasjenige des Makros! hast Du das extern stehen, wirds falsch! Deshalb besser Activeworkbook!

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 16

Du kannst Worksheets über den Index, den Namen oder den Codenamen ansprechen. Alle drei Möglichkeiten erlauben keine Doppeldeutigkeiten. 

Expertenantwort
von Oubyi, Community-Experte für Excel, 9

Ich habe das jetzt nur mal kurz getestet und es funktioniert NICHT.

Dim i As Integer
For i = 1 To 5
Worksheets(i).Name = "Help"
Next i

Antwort
von Sharrky, 10

Nein da VBA sonst ja nicht weiß mit welche er arbeiten soll. Ist wie bei classen in Java

Keine passende Antwort gefunden?

Fragen Sie die Community