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

Forumthread: VBA Zugriff auf SharePoint-Verzeichnis

VBA Zugriff auf SharePoint-Verzeichnis
31.01.2022 16:19:45
paul
VBA & SharePoint treiben mich jetzt endgültig in den Wahnsinn. Leider kann ich bei meinem Problem auch keine Konsistenz feststellen, mal funktioniert es und dann ein Tag drauf nicht mehr. Worum es geht:
Auf dem neuen SharePoint365 haben wir ein Verzeichnis mit ein paar Ordnern für die letzten Jahre. Also "2018" ... bis "2022". In diesen Ordnern liegen 15 gleich strukturierte (aber von verschiedenen Ländern ausgefüllte) ".xlsx" Dateien und je eine ".xlsm". Die ".xlsm" ist mit einem Makro dafür zuständig, eben über dieses Makro aus den anderen Excel Dateien bestimmte Daten zu kopieren und zu konsolidieren.
Jetzt haben wir vor einer Weile vom "alten" zum "neuen" SharePoint-System gewechselt. Seit dem bringen die Verlinkung innerhalb der Makros auf die Verzeichnisse mich echt auf die Palme.
Ich habe die grobe Makrostruktur mal im Anhang. Explizit geht es aber vermutlich um diesen Schnipsel (Pfad1 und Pfad2 hier nur zur Veranschaulichung):

sPfad1 = "//FIRMA.sharepoint.com/sites/000123/Reporting/2022/"

sPfad2 = "C:\Users\BENUTZERNAME\OneDrive - NAME\Reporting\2022\"

sDatei = Dir(CStr(sPfad & "*.xlsx"))

Letzte Woche funktionierte es beim 5. Mal wieder. Diese Woche wieder nicht... Mit Pfad1 soll es eigentlich getan sein und auf das SharePoint-Verzeichnis zugegriffen werden. Das Makro öffnet dann einmal alle ".xlsx" Dateien, kopiert die Daten raus uns gut.
Es kommt entweder Fehlernummer 0 oder 52. Beim Debugging bringt er mich dann immer zu Dir(). Es wird vermutlich an dem Link liegen, aber was genau läuft hier falsch?
Bei Pfad2 klappt es jedoch ohne Probleme. Hier habe ich aus dem SP Verzeichnis eine OneDrive Verknüpfung auf meinem PC angelegt. Das ist aber nur ein Workaround und würde in dem Fall nur bei mir funktionieren.
Hier nochmal die Struktur des Makros:

Public Sub Daten_mehrerer_Dateien_zusammenfuehren_Neu()
On Error GoTo errExit
'Q= Quelle, Z=Ziel
Set WBZ = ThisWorkbook
With Application
.ScreenUpdating = False
.EnableEvents = False
.AskToUpdateLinks = False
.Calculation = xlCalculationManual
End With
'Setzt Dateireferenz
'sPfad = "//FIRMA.sharepoint.com/sites/000123/Reporting/2022/"
sPfad = "C:\Users\BENUTZERNAME\OneDrive - NAME\Reporting\2022\"
sDatei = Dir(CStr(sPfad & "*.xlsx"))
Do While sDatei  ""
Set WBQ = Workbooks.Open(sPfad & sDatei)
Set wsQ = WBQ.Worksheets("CiE")
Set wsZ = WBZ.Worksheets("SpD")
Application.CutCopyMode = False
WBQ.Close
sDatei = Dir()
Loop
With Application
Exit Sub
errExit:
End Sub
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zugriff auf SharePoint-Verzeichnis
31.01.2022 16:56:39
EtoPHG
Hallo Paul,
Die Dir(filename) Funktion ist für DOS-Filestrukturen gedacht und kann nicht mit Sharepoint Strukturen umgehen.
Du musst das Makro über eine OneDrive Struktur (der Infrastruktur der Firma) ausführen, die Du mit der Sharepoint-Struktur synchronisierst.
Gruss Hansueli
Anzeige
AW: VBA Zugriff auf SharePoint-Verzeichnis
31.01.2022 17:21:18
guenni
Habe ein ähnliches Problem bei unserem internen Sharepoint 2016
Der Zugriff funktioniert praktisch immer ab dem 2.ten Mal am Tag.
Meine Vermutung ist ein Security-"Feature". vermutlich kann VBA nicht ohne User-Interaktion autorisieren. ist die Autorisierung via Edge oder in deinem Fall OneDrive mal hergestellt flutscht es auch beim VBA-Zugriff.
Ist eine reine Hypothese, habe keinerlei Evidenz für diese Behauptung.
denke, es wäre einen Versuch wert, vor dem VBA_Zugriff einen Browser-Link anzustoßen.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zugriff auf SharePoint-Verzeichnisse mit VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Projekt öffnen: Öffne dein Excel-Dokument und gehe in den VBA-Editor (Alt + F11).

  2. Modul hinzufügen: Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Makro erstellen: Kopiere und füge den folgenden Code in das Modul ein:

    Public Sub Daten_mehrerer_Dateien_zusammenfuehren_Neu()
        On Error GoTo errExit
        Dim WBZ As Workbook
        Dim WBQ As Workbook
        Dim wsQ As Worksheet
        Dim wsZ As Worksheet
        Dim sDatei As String
        Dim sPfad As String
    
        Set WBZ = ThisWorkbook
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
            .AskToUpdateLinks = False
            .Calculation = xlCalculationManual
        End With
    
        sPfad = "//FIRMA.sharepoint.com/sites/000123/Reporting/2022/"
        sDatei = Dir(CStr(sPfad & "*.xlsx"))
    
        Do While sDatei <> ""
            Set WBQ = Workbooks.Open(sPfad & sDatei)
            Set wsQ = WBQ.Worksheets("CiE")
            Set wsZ = WBZ.Worksheets("SpD")
            ' Hier kannst du die benötigten Daten kopieren
            WBQ.Close
            sDatei = Dir()
        Loop
    
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
            .Calculation = xlCalculationAutomatic
        End With
        Exit Sub
    
    errExit:
        MsgBox "Fehler: " & Err.Description
    End Sub
  4. Makro ausführen: Drücke F5, um das Makro auszuführen.


Häufige Fehler und Lösungen

  • Fehlernummer 0 oder 52: Diese Fehler treten häufig auf, wenn der Zugriff auf die SharePoint-Struktur nicht korrekt konfiguriert ist. Achte darauf, dass du die korrekten Berechtigungen hast.
  • Dir-Funktion funktioniert nicht: Die Dir-Funktion ist nicht für SharePoint geeignet. Verwende stattdessen eine OneDrive-Verknüpfung, um auf die Dateien zuzugreifen.
  • Interaktive Autorisierung: Stelle sicher, dass du die SharePoint-Seite über einen Browser geöffnet hast, um die benötigte Autorisierung zu erhalten.

Alternative Methoden

  • OneDrive-Synchronisierung: Synchronisiere dein SharePoint-Verzeichnis mit OneDrive, um einfacher auf die Dateien zuzugreifen. Der Pfad könnte dann so aussehen:

    sPfad = "C:\Users\BENUTZERNAME\OneDrive - NAME\Reporting\2022\"
  • SharePoint API: Wenn du tiefergehende Automatisierungen benötigst, kannst du die SharePoint API verwenden, um auf die Daten zuzugreifen.


Praktische Beispiele

Beispiel 1: Konsolidieren von Daten aus mehreren Excel-Dateien in SharePoint

Das oben gezeigte Makro bietet eine grundlegende Struktur zur Konsolidierung von Daten aus mehreren Excel-Dateien, die auf SharePoint gespeichert sind. Achte darauf, dass die Struktur der Dateien identisch ist.

Beispiel 2: Überprüfung der Dateipfade

Wenn du Probleme mit den Pfaden hast, teste die Verbindung zum SharePoint-Verzeichnis direkt im Explorer oder über den Browser. Vergewissere dich, dass die Dateien dort tatsächlich vorhanden sind.


Tipps für Profis

  • Fehlermeldungen ausgeben: Nutze MsgBox, um spezifische Fehlermeldungen auszugeben, um die Fehlersuche zu erleichtern.
  • Debugging: Verwende den Debugger im VBA-Editor, um Schritt für Schritt durch den Code zu gehen und Variablenwerte zu überprüfen.
  • SharePoint-Referenzen: Halte dich über die SharePoint-Dokumentation auf dem Laufenden, um neue Funktionen oder Änderungen im Zugriff auf SharePoint zu entdecken.

FAQ: Häufige Fragen

1. Wie funktioniert der Zugriff auf SharePoint mit VBA? Der Zugriff auf SharePoint erfolgt über die Workbooks.Open-Methode, wobei du den richtigen Pfad zur SharePoint-Struktur angeben musst.

2. Was tun, wenn das Makro nicht funktioniert? Überprüfe die Berechtigungen für den Zugriff auf die SharePoint-Dateien und stelle sicher, dass du mit OneDrive synchronisierst, um eventuelle Probleme mit der Dir-Funktion zu umgehen.

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