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

Forumthread: VBA Sharepoint

VBA Sharepoint
11.02.2019 10:48:01
Ro
Hallo,
kann mir bitte jemand hier mit Makro für Exceldatei in SharePoint helfen?
Vielen Dank im Voraus
Robert
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Sharepoint
11.02.2019 15:49:37
Daniel
Hallo Robert,
ja klar, hier bitte eine große Portion Hilfe für dich! Gern geschehen.
Grüße
Daniel
AW: VBA Sharepoint
11.02.2019 15:56:54
Ro
Oh Vielen Dank….Das ist super nett! Wie kann ich bitte diese Makro Code für die Exceldateien die im SharePoint angelegt sind.
Sub kopieren()
' Variablen deklarieren
Dim Datei As String
Dim Url As String
Dim i As Integer
i = 1
' Quellordner wird festgelegt
Url = "https://zt.sharepoint.com/sites/ZtSPServer/GF/100/04/01 Aufstellung Projekte/ _
Bestellungen\"
' Dateien des Quellordners ermitteln
Datei = ""
' Schleife, um jede Datei auszulesen
Do While Datei  ""
' Datei öffnen (Url wird aus den Variablen Url und datei zusammengesetzt
Workbooks.Open Filename:=Url & OnlineDatei
' Z?hlvariable f?r die Zeilen (je Datei eine neue Zeile)
i = i + 1
' Cells wird wie folgt verwendet Cells(Zeilennummer, Spaltennummer)
' Wenn das Makro in der Zieldatei steht, kann die Datei ThisWorkbook genannt werden.
ThisWorkbook.Sheets("Tabelle2").Cells(i, 1) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
67)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 2) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
68)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 3) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
69)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 4) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
70)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 5) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
71)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 6) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
72)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 7) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
73)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 8) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
74)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 9) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
75)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 10) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
76)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 11) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
77)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 12) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
78)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 13) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
79)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 14) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
80)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 15) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
81)
ThisWorkbook.Sheets("Tabelle2").Cells(i, 16) = ActiveWorkbook.Sheets("3.Positionen  _
bearbeiten").Cells(15, _
82)
' Datei schlie?en, ohne ?nderungen zu speichern
ActiveWorkbook.Close savechanges:=False
' neue Datei aus dem Ordner lesen
Datei = Dir()
' Ende der Schleife
Loop
End Sub

Es kommt immer eine Meldung: Die Datei kann nicht heruntergeladen werden!
Das wäre eine Große Hilfe!
Anzeige
AW: VBA Sharepoint
11.02.2019 16:01:19
Ro
Also Die Makro, soll in bestimmte Zellen in der ExcelDateien "Positionen bearbeiten" kopieren, die sich im SharePoint Ordner "Bestellungen" finden, und dann in die Aufstellung Projekte "Tabelle2" eingefügt werden".
Im Laufwerk z.B. C:/ funktioniert die Makro super...aber im SharePoint leider nicht!
Anzeige
AW: VBA Sharepoint
12.02.2019 12:52:06
Daniel
Der Filename wird zusammengesetzt aus der Url (Variable ist vorhanden) und OnlineDatei (Variable ist weder vorhanden noch wird sie definiert). Insofern hat er nur die Url zum öffnen, aber keinen Dateinamen. Er kann also gar nichts öffnen.
Den unteren Teil könntest du so abkürzen:

ActiveWorkbook.Sheets("3.Positionen bearbeiten").Range((Cells(15, 67), Cells(15,82)).Copy _
ThisWorkbook.Sheets("Tabelle2").Cells(i, 1)
Gruß
Anzeige
AW: VBA Sharepoint
12.02.2019 13:26:29
Ro
Danke schön für die Antwort! Wie kann ich die Onlinedatei definieren, in denen (weil sind mehrere Dateien, die sich unter dem URL finden und gleich aufgebaut sind, in dem die Zellen kopieren werden müssen).
Also: das Problem ist:
' Dateien des Quellordners ermitteln
Datei = ""
hier habe ich die Datei nicht so gut definiert. Kannst mir bitte was dabei helfen? Danke dir!
Anzeige
AW: VBA Sharepoint
12.02.2019 13:40:58
Daniel
Versuch mal bitte erstmal das Forum und andere Quellen explizit nach dem Öffnen aller Dateien in einem Verzeichnis zu durchsuchen. Da gibt's nämlich schon jede Menge Themen zu und du kannst dir den Code dort raussuchen. Der Rest sollte dann ja funktionieren. Wenn du gar nicht weiter kommst, schick uns nochmal was du bisher hast und wir sehen weiter.
Anzeige
AW: VBA Sharepoint
12.02.2019 15:27:38
Ro
Hallo Daniel,
danke für dein Antwort.
Leider probiere ich seit 2 Wochen aber finde keine Lösung. Anbei sende ich die Dateien.
Hier die Hauptdatei, in der die kopierte Werten eingefügt werden müssen. Hier befindet sich auch das Makro und Code.
https://www.herber.de/bbs/user/127601.xlsm
Hier ein die einer von der Dateien
https://www.herber.de/bbs/user/127602.xlsx
, in denen die Zellen kopieren werden müssen. Sind mehrere Dateien und werden immer noch mehrere kommen.
Diese befinden sich unter link:https://tech.sharepoint.com/sites/tPServer/GF/100/04/01 Aufstellung Projekte/Bestellungen
Die Code in sich ist gut so, nur die Dateiname= Dir() im Code stimmt es nicht. Habe auch fast nie mit SharePoint gearbeitet und auch nicht so fit mit Makros.
Vielen Dank, weil es wäre eine große Hilfe.
Robert
Anzeige
AW: VBA Sharepoint
12.02.2019 16:22:12
Daniel
Versuchs mal so, aber bitte den Code in ein Modul packen (dein Code steckt auf dem Tabellenblatt)! Rechte Maustaste - Einfügen - Modul. Da rein kopieren. Schau mal ob's funktioniert, kann ja schlecht mit deinem SharePoint testen.
Sub kopieren()
'Makro zum ?ffnen aller Dateien eines Zielverzeichnisses
'Die Daten aus den Bereichen Tabelle1 (15, 67 ) bis (15, 82) und
'werden in Zieldatei (diese Datei)
'Tabelle1 Spalten A bis P kopiert.
'die Daten jeder Datei werden in eine eigene Zeile geschrieben
' Variablen deklarieren
Dim datei As String
Dim Url As String
Dim i As Integer
i = 0
' Quellordner wird festgelegt
Url = "https://tech.sharepoint.com/sites/tPServer/GF/100/04/01 Aufstellung Projekte/ _
Bestellungen/"
' Dateien des Quellordners ermitteln
datei = Dir(Url & "*xls*")
'Sub beenden, falls Ordner nicht existiert
If datei = vbNullString Then
MsgBox "Pfad existiert nicht"
Exit Sub
End If
' Schleife, um jede Datei auszulesen
Do While datei  ""
' Datei ?ffnen (Url wird aus den Variablen Url und datei zusammengesetzt
Workbooks.Open Filename:=Url & datei
' Z?hlvariable f?r die Zeilen (je Datei eine neue Zeile)
i = i + 1
' Cells wird wie folgt verwendet Cells(Zeilennummer, Spaltennummer)
' Wenn das Makro in der Zieldatei steht, kann die Datei ThisWorkbook genannt werden.
ActiveWorkbook.Sheets("3.Positionen bearbeiten").Range(Cells(13, 67), Cells(13, 82)).Copy  _
ThisWorkbook.Sheets("Tabelle2").Cells(i, 1)
' Datei schlie?en, ohne ?nderungen zu speichern
ActiveWorkbook.Close savechanges:=False
' neue Datei aus dem Ordner lesen
datei = Dir
' Ende der Schleife
Loop
End Sub
Falls das nicht klappt, vielleicht mal mit Application.FileDialog(msoFileDialogFolderPicker) versuchen, den Ordner auszuwählen.
Grüße und viel Erfolg
Anzeige
AW: VBA Sharepoint
12.02.2019 16:34:39
Ro
Danke schön...
habe es wieder probiert! Leider wieder kommt Laufzeitfehler 52 Dateiname ist falsch. Bei debbungen wird diese gelb markiert:
datei = Dir(Url & "*xls*")
Nur hier ist das Problem!
Wo sollte es Application.FileDialog(msoFileDialogFolderPicker) rein? Habe wirklich wenige Ahnung von Makros...Danke schön für deine Bemühung!
Anzeige
AW: VBA Sharepoint
13.02.2019 10:10:55
Daniel
Füge dies anstatt URL=… ein:
  ' Quellordner wird festgelegt
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
Url = .SelectedItems(1) & "/"
End With

Hoffe das hilft dir weiter!
AW: VBA Sharepoint
13.02.2019 11:26:10
Ro
Hi Daniel,
danke dir für deine Tipps und Bemühung...leider hat wieder nicht geklappt... datei = Dir(Url & "*xls*") wird wieder gelb markiert... :(((( … diese "*xls*" muss glaube ich anders für die Dateien in SharePoint definiert werden... ich weiß nicht wie man das lösen kann..
Anzeige
AW: VBA Sharepoint
13.02.2019 11:30:49
Daniel
Damit soll vermieden werden, dass er andere Dateien als xls(x) berücksichtigt. Sind denn Excel Tabellen in dem Ordner? Kannst du über den Dialog den richtigen Pfad auswählen? Wird langsam schwierig per Ferndiagnose. Wie sieht der komplette Pfad für eine Datei aus, wenn du sie im Browser öffnest?
Anzeige
AW: VBA Sharepoint
13.02.2019 11:42:09
Ro
Alle Excel Tabellen sind im Ordner und alle haben Makro... also "*xlsm*". Habe auch probiert mit datei = Dir(Url & "*xlsm*") aber wieder kein Ergebnis. Per Dialog kann ich nicht den richtigen Pfad in SharePointordner auswählen.
https://t.sharepoint.com/sites/tPServer/GF/100/04/01 Aufstellung Projekte/Bestellungen/1234.xlsm
so sieht das Pfad z.b. eines datei aus.
Anzeige
AW: VBA Sharepoint
13.02.2019 11:59:14
Daniel
Äh ja wenn du den richtigen Pfad nicht auswählen kannst, dann kann das natürlich auch nicht klappen. Weil er dann ja gar nicht den Pfad in "Url" speichert. Das wird also das Problem sein. Warum du den nicht auswählen kannst, kann ich dir natürlich nicht sagen. Vielleicht solltest du das erst mal prüfen, weil ich denke das wird der Grund sein.
Anzeige
AW: VBA Sharepoint
13.02.2019 12:03:39
Ro
Ich werde es heute Nachmittag von PC meines Chefs testen, da er mehr Zugang als ich in die SharePointAccount hat. Ich gebe dir dann sicher Bescheid.
Ah bin dir echt dankbar für deine zeit und hilfe…
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA SharePoint: Excel-Dateien effizient verwalten


Schritt-für-Schritt-Anleitung

Um mit VBA in SharePoint zu arbeiten, benötigst du einen klaren Code, der die richtigen Dateien identifiziert und verarbeitet. Hier ist ein einfaches Beispiel, um Excel-Dateien in einem SharePoint-Ordner zu öffnen und Daten zu kopieren:

Sub kopieren()
    ' Variablen deklarieren
    Dim datei As String
    Dim Url As String
    Dim i As Integer
    i = 1

    ' Quellordner wird festgelegt
    Url = "https://dein-sharepoint-url/Ordner/"

    ' Dateien des Quellordners ermitteln
    datei = Dir(Url & "*xlsm") ' oder "*xls" je nach Dateityp

    ' Schleife, um jede Datei auszulesen
    Do While datei <> ""
        ' Datei öffnen
        Workbooks.Open Filename:=Url & datei
        ' Daten kopieren
        ActiveWorkbook.Sheets("3.Positionen bearbeiten").Range("A1:B10").Copy _
        ThisWorkbook.Sheets("Tabelle2").Cells(i, 1)

        ' Datei schließen
        ActiveWorkbook.Close savechanges:=False
        ' Nächste Datei
        datei = Dir
        i = i + 1
    Loop
End Sub

Dieser Code sucht nach allen Excel-Dateien im angegebenen SharePoint-Ordner und kopiert die Daten von "3.Positionen bearbeiten" in "Tabelle2".


Häufige Fehler und Lösungen

  • Fehler: "Die Datei kann nicht heruntergeladen werden!"

    • Überprüfe die URL und stelle sicher, dass du die richtigen Berechtigungen hast, um auf die Dateien im SharePoint zuzugreifen.
  • Fehler: Laufzeitfehler 52 - Dateiname ist falsch.

    • Stelle sicher, dass Dir die richtige URL und den Dateityp verwendet, z.B. datei = Dir(Url & "*xlsm").
  • Fehler: Anwendung kann nicht geöffnet werden.

    • Überprüfe, ob der Pfad korrekt ist und ob du die Datei im Browser öffnen kannst.

Alternative Methoden

Eine alternative Methode zur Verwendung von VBA in SharePoint ist, die Application.FileDialog-Funktion zu verwenden, um den Ordner auszuwählen. Hier ein Beispiel:

Sub wähleOrdner()
    Dim Url As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        Url = .SelectedItems(1) & "/"
    End With
    ' Anschließend kannst du die URL im vorherigen Code verwenden
End Sub

Diese Methode hilft dir, den richtigen Ordner manuell auszuwählen, falls die URL nicht korrekt ist.


Praktische Beispiele

Wenn du Excel-Makros in SharePoint online ausführen möchtest, ist es wichtig, den richtigen Dateipfad zu verwenden. Hier sind einige Beispiele:

  1. Excel-Datei öffnen und Daten kopieren:

    Workbooks.Open Filename:=Url & "deineDatei.xlsm"
  2. Daten in SharePoint speichern:

    ThisWorkbook.SaveAs Filename:=Url & "deineDateiNeu.xlsm"
  3. Datei verschieben:

    Name Url & "alteDatei.xlsm" As Url & "neuerOrdner/neueDatei.xlsm"

Tipps für Profis

  • Verwende SharePoint-API für komplexere Vorgänge, um die Leistung zu optimieren.
  • Achte darauf, dass alle Dateipfade korrekt sind und die Berechtigungen stimmen.
  • Setze Fehlerbehandlungsroutinen in deinen VBA-Codes ein, um Probleme frühzeitig zu erkennen.

FAQ: Häufige Fragen

1. Wie kann ich Excel-Dateien auf SharePoint speichern? Um eine Excel-Datei auf SharePoint zu speichern, benutze den SaveAs-Befehl mit dem vollständigen Pfad zur Datei auf SharePoint.

2. Funktioniert VBA in SharePoint Online? Ja, aber die Nutzung kann je nach Berechtigungen und Netzwerkeinstellungen variieren. Stelle sicher, dass du die richtigen Zugriffsrechte hast.

3. Was ist der Unterschied zwischen SharePoint und SharePoint Online? SharePoint ist die lokale Version, während SharePoint Online Teil von Office 365 ist und über das Internet zugänglich ist. Die VBA-Programmierung kann sich in Bezug auf die Methoden und Pfade unterscheiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige