Was ist eine SharePoint-Liste?
Eine Liste ist eine Sammlung von Daten, die eine Struktur hat: Sie ist im Wesentlichen wie eine Tabelle oder eine einfache Datenbank. Es kann viele verschiedene Arten von Informationen enthalten, darunter Zahlen, Text und sogar Bilder. Sie können die Liste auch mit Ihren Teammitgliedern und Personen teilen, denen Sie Zugriff gewährt haben. Sie finden mehrere gebrauchsfertige Listenvorlagen, die einen guten Ausgangspunkt für die Organisation von Listenelementen bieten.
Dieser Artikel zeigt Ihnen, wie Sie Ihre vorhandene SharePoint-Liste mithilfe von VBA in ein Excel-Arbeitsblatt herunterladen. Lassen Sie uns zuerst die SharePoint-Listen-URL und ihre GUID identifizieren. Diese benötigen Sie später.
Um die URL und GUID der Liste zu erfassen, besteht der erste Schritt darin, zu Ihrer Website zu navigieren. Klicken Sie auf „Site contents“, Sie sehen dann die Inhalte einschließlich der Listen. Zum Beispiel möchten wir die Liste „Apr 2023“ herunterladen – bewegen Sie die Maus und klicken Sie auf Einstellungen.
Dadurch werden Sie auf diese Seite weitergeleitet.
Der Text im orangefarbenen Rechteck ist die URL der Liste und der Text im roten Rechteck ist die GUID der Liste.
Laden Sie die SharePoint-Liste mit VBA herunter
Wir haben zwei Methoden, um die Liste herunterzuladen: (1) Verwenden von xlSrcExternal von ListObject und (2) Verwenden von Microsoft ACE OLEDB-Verbindung
Methode 1: Verwenden von xlSrcExternal von ListObject
Nachdem eine Liste auf einer SharePoint-Website veröffentlicht wurde, können Sie eine direkt in eine Tabelle laden.
Schritt 1: Kopieren Sie diese Subroutine und fügen Sie sie in ein Modul ein.
Sub DownloadSharePointList_xlSrcExternal()
Dim SharePointURL As String, ListGUID As String
SharePointURL = „https://vmydof.sharepoint.com/sites/Sales/_vti_bin“
ListGUID = „{af550405-35fa-4b10-92f4-180e22039eba}“
Sheet1.UsedRange.ClearContents
Sheet1.ListObjects.Add xlSrcExternal, Array(SharePointURL, ListGUID), False, , Sheet1.Range(„B2“)
End Sub
Schritt 2: Aktualisieren Sie die Variablen SharePointURL und ListGUID.
- SharePointURL – dies ist die SharePoint-Adresse plus der Ordnername /_vti_bin.
- ListGUID – Der Name oder die GUID der Liste. Eine GUID ist eine 32-stellige numerische Zeichenfolge, die die Liste auf dem Server identifiziert.
Schritt 3: Führen Sie das Makro aus. Die Liste sollte in das Arbeitsblatt Sheet1 geladen werden.
Methode 2: Verwenden der Microsoft ACE OLEDB-Verbindung
Wir verwenden Microsoft.ACE.OLEDB.12.0 als Treiber gemäß Definition unter connectionstring.com/sharepoint/
Wir können zwei Versionen des Recordsets haben: (1) Alle herunterladen und (2) nur einige Spalten herunterladen.
(1) Laden Sie alle Datensätze herunter
Schritt 1: Kopieren Sie diese Subroutine und fügen Sie sie in ein Modul ein.
Sub DownloadSharePointList_OLEDB()
Dim conn As Object, rst As Object
Dim SharePointURL As String, ListGUID As String, query_string As String
Set conn = CreateObject(„ADODB.Connection“)
Set rst = CreateObject(„ADODB.Recordset“)
SharePointURL = „https://vmydof.sharepoint.com/sites/Sales“
ListGUID = „af550405-35fa-4b10-92f4-180e22039eba“
With conn
.ConnectionString = „Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=1;RetrieveIds=Yes;“ & _
„DATABASE=“ & SharePointURL & „;“ & „LIST={“ & ListGUID & „};“
.Open
End With
query_string = „SELECT * FROM [“ & ListGUID & „];“
With rst
If .State = 1 Then .Close
.ActiveConnection = conn
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = query_string
.Open
If .EOF = False Then
Sheet1.UsedRange.ClearContents
Sheet1.Range(„A1“).CopyFromRecordset rst
End If
.Close
End With
If conn.State = 1 Then conn.Close
Set rst = Nothing
Set conn = Nothing
End Sub
Schritt 2: Aktualisieren Sie Folgendes:
- Das Schlüsselwort „DATABASE“ gibt die SharePoint-URL an
- Das Schlüsselwort „LIST“ gibt den GUID-Wert für die gewünschte SharePoint-Liste an (list=table)
Abfrage ohne Angabe von Tabellennamen. dh verwenden Sie „SELECT FROM table“ oder „SELECT FROM list“ (gleiches Ergebnis von beiden).
Schritt 3: Führen Sie das Makro aus. Die Liste sollte in das Arbeitsblatt Sheet1 geladen werden.
(2) Laden Sie bestimmte Spalten herunter
Schritt 1: Kopieren Sie diese Subroutine und fügen Sie sie in ein Modul ein.
Sub DownloadSharePointList_OLEDB()
Dim conn As Object, rst As Object
Dim SharePointURL As String, ListGUID As String, query_string As String
Dim index As Integer: index = 0
\’Assign SQL server connection and recordset object (Late-binding)
Set conn = CreateObject(„ADODB.Connection“)
Set rst = CreateObject(„ADODB.Recordset“)
SharePointURL = „https://vmydof.sharepoint.com/sites/Sales“
ListGUID = „af550405-35fa-4b10-92f4-180e22039eba“
With conn
.ConnectionString = „Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=1;RetrieveIds=Yes;“ & _
„DATABASE=“ & SharePointURL & „;“ & „LIST={“ & ListGUID & „};“
.Open
End With
query_string = „SELECT * FROM [“ & ListGUID & „];“
With rst
If .State = 1 Then .Close
.ActiveConnection = conn
.CursorType = adOpenDynamic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Source = query_string
.Open
If .EOF = False Then
Sheet1.UsedRange.ClearContents
Do While Not .EOF
index = index + 1
Sheet1.Range(„A“ & index).Value = .Fields(„ID“).Value
Sheet1.Range(„B“ & index).Value = .Fields(„Datum“).Value
Sheet1.Range(„C“ & index).Value = .Fields(„Betrag“).Value
Sheet1.Range(„D“ & index).Value = .Fields(„Beschreibung“).Value
.MoveNext
Loop
End If
.Close
End With
If conn.State = 1 Then conn.Close
Set rst = Nothing
Set conn = Nothing
End Sub
Schritt 2: Aktualisieren Sie Folgendes:
- Das Schlüsselwort „DATABASE“ gibt die SharePoint-URL an
- Das Schlüsselwort „LIST“ gibt den GUID-Wert für die gewünschte SharePoint-Liste an (list=table)
Abfrage ohne Angabe von Tabellennamen. dh verwenden Sie „SELECT FROM table“ oder „SELECT FROM list“ (gleiches Ergebnis von beiden).
Schritt 3: Führen Sie das Makro aus. Die Spalten ID, Datum, Betrag und Beschreibung der Liste werden in das Arbeitsblatt Sheet1 geladen.
Benötigen Sie einen VBA Programmierer?
Wir als exact construct programmieren mit einem Team von rd. 20 Mitarbeitern seit über 10 Jahren Excel-Tools. Wir sind ein Nischenanbieter der spezialisiert auf Makros/VBA-Codes ist. Daneben unterstützen wir auch als 3rd Level Support die IT-Abteilungen rund um Probleme bei MS Office (Excel, Word, PowerPoint, etc.).
Haben Sie ein Excel-Problem? Benötigen Sie einen Makro-Programmierer? Rufen Sie uns unverbindlich an +41 52 511 05 25 oder kontaktieren Sie uns via Kontaktformular.