Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datei per Makro auf Sharepoint speichern

Datei per Makro auf Sharepoint speichern
11.12.2020 13:56:02
Pare
Hallo liebe Community,
bisher konnte ich immer nur passiv aber dafür schon sehr gut von diesem Forum profitieren. Zunächst vielen Dank dafür!
Jetzt bin ich aber auf eine Herausforderung gestoßen, auf die ich leider keine Lösung aus anderen Beiträgen finden konnte. Deshalb verfasse ich nun selber meinen ersten Beitrag. Zu meinen VBA-Kenntnissen, diese sind noch sehr ausbaufähig. Bitte in den Antworten berücksichtigen. Danke!
Nun zu meinem Problem:
Ich habe eine Exceldatei erstellt (ein Bestellformular). Dieses soll per Schaltfläche, nachdem bestimmte Pflichtfelder gefüllt sind, an eine E-Mail Adresse als Anhang versendet werden und zusätzlich mit einem neuen Namen überschrieben und im selben Ordner abgelegt werden, in dem die Ursprungsdatei lag. Dies hat alles soweit gut geklappt.
Nun soll die Datei jedoch nicht lokal, sondern auf einem Sharepoint liegen und hier beginnt mein Problem. Nämlich schaffe ich es nicht, die Datei in dem Ordner zu speichern, wo sie davor lag. Wichtig hierbei ist noch, dass ich nicht einen festen Pfad in den Code schreiben kann, da sich dieser immer wieder wechseln wird.
Ich habe versucht mit ActiveWorkbook.Path zu arbeiten, jedoch funktionierte das bisher leider nicht.
Ich könnte mir vorstellen, dass diese Fragestellung schon bei einigen aufgetaucht ist und hoffentlich kann mir hier jemand weiterhelfen. Danke schon mal!
VG
Anbei mein Code. Meiner Meinung nach wird dieser ab dem Ausdruck: Pfad = ActiveWorkbook.Path für meine Fragestellung relevant.
Sub Schaltfläche1_Klicken()
Dim aws As String
Dim olapp As Object
Dim zeile As Long, OK As Boolean
OK = True
For zeile = 16 To 39 'Prüft ob Pflichtfelder befüllt sind
If Tabelle1.Cells(zeile, 3).Value  "" Then
If Tabelle1.Cells(7, 5).Value = "" Then OK = False
If Tabelle1.Cells(7, 22).Value = "" Then OK = False
If Tabelle1.Cells(8, 5).Value = "" Then OK = False
If Tabelle1.Cells(zeile, 3).Value = "" Then OK = False
If Tabelle1.Cells(zeile, 4).Value = "" Then OK = False
If Tabelle1.Cells(zeile, 14).Value = "" Then OK = False
If Tabelle1.Cells(zeile, 18).Value = "" Then OK = False
If Tabelle1.Cells(41, 5).Value = "" Then OK = False
If Tabelle1.Cells(42, 5).Value = "" Then OK = False
If Tabelle1.Cells(42, 22).Value = "" Then OK = False
End If
Next
If Not OK Then
MsgBox "Senden nicht möglich - Bitte füllen Sie alle hellroten Pflichtfelder aus!"
Cancel = True
Exit Sub
End If
Pfad = ActiveWorkbook.Path
'ActiveWorkbook.ActiveSheet.Copy 'später auskommentieren im Echtbetrieb
ActiveWorkbook.SaveAs (Pfad & "KW" & Range("c14").Value & "_" & Range("n16").Value & "_" &  _
Range("r16").Value)  'Speichert die Kopie
awb = ActiveWorkbook.FullName
Set olapp = CreateObject("Outlook.Application") 'Erstellt eine Outlooksession
With olapp.CreateItem(0)
.To = Range("d5").Value 'Empfänger
.Subject = "Bestellung KW" & Range("c14").Value & "_" & Range("n16").Value & "_" & Range( _
_
"r16").Value) 'Betreff
.htmlBody = "Bitte bestätigen Sie die Bestellung bis zum " & Range("z1").Value & " an  _
die E-Mail Adresse des Absenders." 'Text
.Attachments.Add awb 'Anhang
.Display
End With
'ActiveWorkbook.Close 'Schließt die Kopie
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei per Makro auf Sharepoint speichern
11.12.2020 20:07:22
Marc
Hi Pare,
kannst du dein Problem noch etwas genauer erklären? Bekommst du eine Fehlermeldung, oder wird die Kopie einfach nicht in den Sharepoint gespeichert. Habe deinen Code mal kopiert und bis auf eine Klammer, die zu viel war hat bei mir alles geklappt.
Gruß Marc
AW: Datei per Makro auf Sharepoint speichern
14.12.2020 09:24:10
Pare
Hallo Marc,
danke für deine Rückmeldung.
Ja es ist richtig, dass der Code funktioniert. Das Problem jedoch besteht darin, wo die Kopie gespeichert wird. D.h. die Kopie wird immer in der ersten Ebene der Dokumentenbibliothek gespeichert.
Lege ich z.B. einen Ordner an "Bestellungen" und dann einen Unterordner "KW1" dann wird das Formular auch automatisch im Unterordner "KW1" erzeugt. Das funktioniert soweit. Heißt also die Datei befindet sich im richtigen Ordner.
Wenn ich das Makro dann aber ausführe, wird die Kopie leider im Oberordner "Bestellungen" gespeichert. Die Kopie müsste aber im Unterordner "KW1" hinterlegt werden. Daher mein Ansatz mit ActiveWorkbook.Path. Jedoch leider erfolglos.
Für weitere Hilfe wäre ich sehr dankbar.
VG
Anzeige
AW: Datei per Makro auf Sharepoint speichern
17.12.2020 20:17:40
Marc
Hallo Pare,
probier mal
ActiveWorkbook.SaveAs (Pfad& "\" & "KW" & Range("c14").Value & "_" & Range("n16").Value & "_" &  _
_
Range("r16").Value)  'Speichert die Kopie
Gruß Marc
AW: Datei per Makro auf Sharepoint speichern
18.12.2020 15:42:53
Pare
Danke Marc! Das hat mein Problem gelöst!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel-Datei per Makro auf SharePoint speichern


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei. Stelle sicher, dass du die Datei, die du speichern möchtest, geöffnet hast.

  2. Erstelle ein Makro. Gehe zu Entwicklertools > Visual Basic, um den VBA-Editor zu öffnen.

  3. Füge den folgenden Code ein:

Sub Schaltfläche1_Klicken()
    Dim aws As String
    Dim olapp As Object
    Dim zeile As Long, OK As Boolean
    OK = True
    For zeile = 16 To 39 'Prüft ob Pflichtfelder befüllt sind
        If Tabelle1.Cells(zeile, 3).Value <> "" Then
            If Tabelle1.Cells(7, 5).Value = "" Then OK = False
            If Tabelle1.Cells(7, 22).Value = "" Then OK = False
            If Tabelle1.Cells(8, 5).Value = "" Then OK = False
            If Tabelle1.Cells(zeile, 3).Value = "" Then OK = False
            If Tabelle1.Cells(zeile, 4).Value = "" Then OK = False
            If Tabelle1.Cells(zeile, 14).Value = "" Then OK = False
            If Tabelle1.Cells(zeile, 18).Value = "" Then OK = False
            If Tabelle1.Cells(41, 5).Value = "" Then OK = False
            If Tabelle1.Cells(42, 5).Value = "" Then OK = False
            If Tabelle1.Cells(42, 22).Value = "" Then OK = False
        End If
    Next
    If Not OK Then
        MsgBox "Senden nicht möglich - Bitte füllen Sie alle hellroten Pflichtfelder aus!"
        Exit Sub
    End If
    Pfad = ActiveWorkbook.Path
    ActiveWorkbook.SaveAs (Pfad & "\" & "KW" & Range("c14").Value & "_" & Range("n16").Value & "_" & Range("r16").Value) 'Speichert die Kopie
    awb = ActiveWorkbook.FullName
    Set olapp = CreateObject("Outlook.Application") 'Erstellt eine Outlooksession
    With olapp.CreateItem(0)
        .To = Range("d5").Value 'Empfänger
        .Subject = "Bestellung KW" & Range("c14").Value & "_" & Range("n16").Value & "_" & Range("r16").Value 'Betreff
        .htmlBody = "Bitte bestätigen Sie die Bestellung bis zum " & Range("z1").Value & " an die E-Mail Adresse des Absenders." 'Text
        .Attachments.Add awb 'Anhang
        .Display
    End With
End Sub
  1. Füge eine Schaltfläche hinzu. Gehe zurück zu Excel, füge eine Schaltfläche hinzu und verlinke sie mit dem Makro.

  2. Speichere die Datei als Makro-fähige Datei. Stelle sicher, dass du die Datei im Format .xlsm speicherst.


Häufige Fehler und Lösungen

  • Fehler: Die Datei wird im falschen Ordner gespeichert.
    Lösung: Achte darauf, dass der Pfad korrekt gesetzt ist. Verwende ActiveWorkbook.Path, um den aktuellen Pfad dynamisch zu ermitteln.

  • Fehler: Makro funktioniert nicht in SharePoint.
    Lösung: Stelle sicher, dass du die Datei im richtigen Format speicherst und dass die SharePoint-Bibliothek für Makros konfiguriert ist.


Alternative Methoden

Falls du Schwierigkeiten mit VBA hast, kannst du auch:

  • Power Automate verwenden: Erstelle einen Flow, der die Excel-Datei automatisch in SharePoint speichert.
  • Manuelles Speichern: Speichere die Datei manuell in SharePoint, wenn du nur gelegentlich die Datei aktualisieren musst.

Praktische Beispiele

  1. Automatisches Speichern bei Bedarf: Verwende das oben genannte Makro, um Bestellungen automatisch zu verwalten und die Excel-Datei direkt in SharePoint zu speichern.

  2. Kombination von Excel und Outlook: Nutze die Möglichkeit, Daten aus Excel direkt an Outlook zu senden, um Bestellungen effizient zu verwalten.


Tipps für Profis

  • Fehlerbehandlung einbauen: Füge On Error Resume Next hinzu, um mögliche Fehler im Code abzufangen.
  • Testen in einer sicheren Umgebung: Teste deine Makros in einer Testumgebung, bevor du sie im Live-Betrieb verwendest.
  • SharePoint-API nutzen: Verwende die SharePoint-API für komplexere Anforderungen, um Dateien programmgesteuert in SharePoint zu speichern.

FAQ: Häufige Fragen

1. Kann ich Excel-Makros auch in SharePoint Online ausführen?
Ja, Excel-Makros können in SharePoint Online ausgeführt werden, aber du musst sicherstellen, dass die Bibliothek dafür konfiguriert ist.

2. Wie kann ich sicherstellen, dass meine Datei immer im richtigen Ordner gespeichert wird?
Verwende ActiveWorkbook.Path und stelle sicher, dass du den Pfad korrekt setzt, um die Datei im gewünschten Ordner zu speichern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige