Clever-Excel-Forum

Normale Version: Funktion =TEIL funktioniert auf SharePoint nicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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!
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ß
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