Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Funktion =TEIL funktioniert auf SharePoint nicht
#1
Hallo zusammen,

Ich habe mir eine Tabelle erstellt die ich als Vorlage benutze. Hier habe ich mir ein VBA Projekt erstellt, welches mir eine neue Mappe erstellt und zwar so das ich für jeden Werktag ein eigenes Blatt in der Mappe habe welches dann auch gleich mit dem Richtigen Datum benannt wird ausgehend on einem Startdatum. Funktioniert hervorragend.

Code:
Sub MachMirEinenMonat()
Dim wksQuelle As Worksheet
Dim vntDatum As Variant
Dim lngMonat As Long
Dim lngJahr As Long
Dim wbkNeu As Workbook
Dim lngTageImMonat As Long
Dim lngTag As Long
Set wksQuelle = ThisWorkbook.Worksheets("Bestellung VS")

vntDatum = InputBox("Gib ein beliebiges Datum des gewünschten Monats ein!" & vbCr & "Beispiel: 13.2.2012")

If Not IsDate(vntDatum) Then
MsgBox "Kein Datum!", , vntDatum
Exit Sub
End If

lngMonat = Month(vntDatum)
lngJahr = Year(vntDatum)
lngTageImMonat = Day(DateSerial(lngJahr, lngMonat + 1, 0))
wksQuelle.Copy
Set wbkNeu = ActiveWorkbook

For lngTag = 2 To lngTageImMonat
wbkNeu.Worksheets(1).Copy After:=wbkNeu.Worksheets(wbkNeu.Worksheets.Count)
Next
For lngTag = 1 To lngTageImMonat
wbkNeu.Worksheets(lngTag).Name = Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")
Next

'lösche alle Sonntage
For lngTag = 1 To lngTageImMonat
If Weekday(DateSerial(lngJahr, lngMonat, lngTag)) = 1 Then
  Application.DisplayAlerts = False
  wbkNeu.Worksheets(Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")).Delete
  Application.DisplayAlerts = True
End If
Next

'lösche alle Samstage
For lngTag = 1 To lngTageImMonat
If Weekday(DateSerial(lngJahr, lngMonat, lngTag)) = 7 Then
  Application.DisplayAlerts = False
  wbkNeu.Worksheets(Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")).Delete
  Application.DisplayAlerts = True
End If
Next

Cells(2, 4).Value = ActiveSheet.Name
Cells(2, 4).Copy

End Sub


In der Celle D2 habe ich die Funktion =TEIL(ZELLE("dateiname";A1);SUCHEN("]";ZELLE("dateiname";A1))+1;31) eingetragen. Auch das funktioniert eigentlich, aber leider nur solange wie die Mappe in der Desktop App geöffnet wird. 
Da die Mappe von mehreren Kollegen gleichzeitig bearbeite werden muss liegt diese in SharePoint und nun fängt das Drama an. Denn öffnet man die Mappe in SP wird in Zelle D2 leider nur #Wert angezeigt.

Jetzt habe ich ein ein neues Modul eingefügt, leider wird das Modul aber nicht mit in die neu erstellt Mappe mit übernommen.
Ich muss in der neuen mappe ebenfalls das Modul s.u. reinkopieren. Und dann funktioniert das leider auch nur wenn ich in jedem einzelnen Blatt die Zelle D2 auswähle und mit Enter bestätige.

Code:
Public Function blattname() As String
Application.Volatile
blattname = ActiveSheet.Name
End Function

Kann mir hier jemand weiter helfen? Ich stehe total auf dem Schlauch und komme nicht mehr weiter.

besten Dank!
Antworten Top
#2
Hallo,

erstmal der Tipp "Filename" statt "dateiname" zu verwenden, was generell Probleme in mehrsprachigen Umgebungen löst.
Und, ZELLE ist mit dem Parameter Filename in Excel-Online nicht verfügbar, falls Du jetzt Excel im Browser meinst.

https://support.microsoft.com/de-de/offi...5d67c2b2cf
https://support.microsoft.com/en-us/offi...5d67c2b2cf

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#3
UPDATE

habe nach langem suchen doch noch eine Lösung gefunden. Ich habe einen weiteren Schritt in den Code eingefügt. Also erst wir die neue mappe erstellt ab der dem Startdatum welches in die MSG Box eingegeben wird, dabei wird für jeden Tag ein Sheet angelegt. Jedes Sheet wird jetzt umbenannt mit dem Datum. jetzt werden Samstage gelöscht, dann werden Sonntage gelöscht und nun der letzte Schritt allen Scheets wird in D2 der Sheetname eingetragen. Tip Top und das doofe sharepoint funkt nicht mehr dazwischen. Den neu eingefügten Code beginnt ganz unten  "übertrage Blattname in D2", nur falls es jemanden interessiert  15





Code:
Sub MachMirEinenMonat()
Dim wksQuelle As Worksheet
Dim vntDatum As Variant
Dim lngMonat As Long
Dim lngJahr As Long
Dim wbkNeu As Workbook
Dim lngTageImMonat As Long
Dim lngTag As Long
Set wksQuelle = ThisWorkbook.Worksheets("Bestellung VS")

vntDatum = InputBox("Gib ein beliebiges Datum des gewünschten Monats ein!" & vbCr & "Beispiel: 13.2.2012")

If Not IsDate(vntDatum) Then
MsgBox "Kein Datum!", , vntDatum
Exit Sub
End If

lngMonat = Month(vntDatum)
lngJahr = Year(vntDatum)
lngTageImMonat = Day(DateSerial(lngJahr, lngMonat + 1, 0))
wksQuelle.Copy
Set wbkNeu = ActiveWorkbook

For lngTag = 2 To lngTageImMonat
wbkNeu.Worksheets(1).Copy After:=wbkNeu.Worksheets(wbkNeu.Worksheets.Count)
Next
For lngTag = 1 To lngTageImMonat
wbkNeu.Worksheets(lngTag).Name = Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm.")
Next

'lösche alle Sonntage
For lngTag = 1 To lngTageImMonat
If Weekday(DateSerial(lngJahr, lngMonat, lngTag)) = 1 Then
  Application.DisplayAlerts = False
  wbkNeu.Worksheets(Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm.")).Delete
  Application.DisplayAlerts = True
End If
Next

'lösche alle Samstage
For lngTag = 1 To lngTageImMonat
If Weekday(DateSerial(lngJahr, lngMonat, lngTag)) = 7 Then
  Application.DisplayAlerts = False
  wbkNeu.Worksheets(Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm.")).Delete
  Application.DisplayAlerts = True
End If
Next

'übertrage Blattname in D2
For Each Sheet In Worksheets
Sheet.Range("D2").Value = Sheet.Name
Next


End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste