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

Datei per VBA auf SP speichern

Forumthread: Datei per VBA auf SP speichern

Datei per VBA auf SP speichern
22.11.2021 18:09:53
Georg
Hallo zusammen,
Frage: wie kann ich aus einer "Steuerdatei" heraus eine zweite Datei von meiner HDD an ein SharePoint Laufwerk übertragen?
Details: Ich habe eine Steuerdatei, in der die Pfadangabe der zu übertragenden Datei und das Ziellaufwerk auf SharePoint abgelegt sind. Wenn ich den Code jetzt laufen lasse, baut er mir lieb den korrekten Pfad (s.u.) zusammen, aber bleibt bei der Speicherzeile hängen (Laufzeitfehler 52. Dateiname oder -nummer falsch).
Der Pfad, den er zusammenbaut ist genau wie der, den er im Rekorder mitschreibt, wenn ich die Zieldatei öffne und "per Hand" auf das Laufwerk speichere.
Gibt es da ein besonderes Verfahren zum Speichern?
Danke und Gruß Georg
sSource: "C:\Users\A299386\Desktop\AA\Berichte\Daten\2021\KW 47 - 2021.11.22 (Mo)\1 - MISPC SF\1-SFB-MISPC CUGER 2021.11.22-1.xlsb"
sTarget: "https://telekom.sharepoint.de/sites/CS_FB/Freigegebene%20Dokumente/1-SFB-MISPC CUGER 2021.11.22-1.xlsb"

Sub Kopieren_zu_SP()
Dim QuellPfad
Dim QuellOrdner
Dim QuellDateiKurz
Dim QuellDateiLang
Dim ZielPfad
Dim ZielOrdner
Dim sSource As String
Dim sTarget As String
QuellPfad = Range("C3").Offset(1, 1).Value
QuellOrdner = Range("C3").Offset(1, 2).Value
QuellDateiKurz = Range("C3").Offset(1, 3).Value
ZielPfad = Range("C3").Offset(1, 4).Value
ZielOrdner = Range("C3").Offset(1, 5).Value
QuellDateiLang = Dir(QuellPfad & QuellOrdner & QuellDateiKurz)
sSource = QuellPfad & QuellOrdner & QuellDateiLang
sTarget = ZielPfad & ZielOrdner & QuellDateiLang
Application.DisplayAlerts = False
FileCopy sSource, sTarget
Application.DisplayAlerts = True
End Sub
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei per VBA auf SP speichern
23.11.2021 10:36:04
Georg
Danke Yal, aber leider komme ich da nicht mit klar. Es geht dort letztlich um den .CopyTo Befehl. Wenn ich ihn einbaue, geht gar nichts. Ich bekomme sofort die Fehlermeldung: "Fehler beim Kompilieren: ungültiger Bezeichner". :- (
Ich hänge meine letzte Version mal unten an. Gibt es vielleicht noch andere Ideen?
'--------------------------------

Sub Kopieren_zu_SP()
Dim QuellPfad
Dim QuellOrdner
Dim QuellDateiKurz
Dim QuellDateiLang
Dim ZielPfad
Dim ZielOrdner
Dim sSource As String
Dim sTarget As String
QuellPfad = Range("C3").Offset(1, 1).Value
QuellOrdner = Range("C3").Offset(1, 2).Value
QuellDateiKurz = Range("C3").Offset(1, 3).Value
ZielPfad = Range("C3").Offset(1, 4).Value
ZielOrdner = Range("C3").Offset(1, 5).Value
QuellDateiLang = Dir(QuellPfad & QuellOrdner & QuellDateiKurz)
sSource = QuellPfad & QuellOrdner & QuellDateiLang
sTarget = ZielPfad & ZielOrdner & QuellDateiLang
sSource.CopyTo sTarget
End Sub

Anzeige
AW: Datei per VBA auf SP speichern
23.11.2021 11:28:31
Yal
Hallo Georg,
eine Eigenschaft oder Methode nach einem Punkt bedeutet, dass das Objekt davor die Methode/Eigenschaft besitzt.
Ein Worksheet hat die Methode "Copy", aber auch den Eigenschaft "Name"
Ein Workbook hat die Methode "Save", usw.
sSource ist bei Dir einen String, spricht kein Objekt, sondern einfache Variable. Es hat keine Eigenschaft/Methode.
Du muss auf Basis der beschreibenden String (Pfad) einen Objekt herstellen, das die Methode "Copy" besitzt.
In dem Fall handelt es sich um einen Datei. Datei werden im Allgemein mit den Objekten aus der Library (Bibliothek) "Microsoft Scripting Runtime" behandelt.
Gehe auf "Extras", "Verweise", suche "Microsoft Scripting Runtime" und setze einen Hacken.
Dann hast Du in deinem Objekt-Katalog (F2 oder "Ansicht, "Objektkatalog") da wo "<Alle Bibliotheken>" jetzt einen "Scripting" Eintrag und unten alle darin verfügbare Objekte.
Am Ende sollte es so aussehen:

Sub Kopieren_zu_SP()
'Unter Verweise auf "Microsoft Scripting Runtime"
Dim FSO As New FileSystemObject
Dim QuellDatei As File
Dim QuellPfad As String
Dim ZielPfad As String
QuellPfad = Cells(4, 4).Value & Cells(4, 5).Value & Cells(4, 6).Value 'Zeile 4, Spalten D, E, F
ZielPfad = Cells(4, 7).Value & Cells(4, 8).Value 'Spalten G,H
Set QuellDatei = FSO.GetFile(QuellPfad)
If Not QuellDatei Is Nothing Then
If MsgBox("Es wird " & vbCr & QuellDatei.Path & vbCr & "nach" & ZielPfad & vbCr & "kopiert.", vbOKCancel) = vbOK Then
QuellDatei.Copy ZielPfad
End If
End If
End Sub
VG
Yal
Anzeige
AW: Datei per VBA auf SP speichern
23.11.2021 16:14:46
Georg
Hallo Yal,
hmm, das sind ganz neue Themen für mich - spannend! Ein explizites Dankeschön für die genauen Erklärungen!!
Was ich nicht verstehe ist, dass ich mit deinem Code bei dem .copy Befehl auf einen Berechtigungs-Fehler laufe, wenn ich definitiv die Berechtigungen dazu habe, auf das Laufwerk zu schreiben. Denn wenn ich per VBA eine Test Datei auf der HDD öffne und dann auf dem SP Laufwerk speichere, geht es problemlos. Ich hänge den Code unten ein.
Das muss dann doch auch gehen, ohne daß ich die Datei erst öffne. ?!?!?!
Danke und Gruß Georg

Sub Makro1()
ChDir _
"C:\Users\A299386\Desktop\AA\Berichte\Daten\2021\KW 47 - 2021.11.22 (Mo)"
Workbooks.Open Filename:= _
"C:\Users\A299386\Desktop\AA\Berichte\Daten\2021\KW 47 - 2021.11.22 (Mo)\Test.xlsm"
ChDir "C:\Users\A299386\Deutsche Telekom AG\CS_SFB - Dokumente"
ActiveWorkbook.SaveAs Filename:= _
"https://telekom.sharepoint.de/sites/CS_FB/Freigegebene%20Dokumente/Test.xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

Anzeige
AW: Datei per VBA auf SP speichern
23.11.2021 18:35:39
Yal
Hallo Georg,
da bin ich überfragt. Es kommt darauf an, welche Version von Sharepoint Du verwendest, wie die Authentifizierung eingestellt sind usw.
Excel macht zb. keine Pass-Through deiner SSO-Domain-Anmeldung, daher die separate SP-Anmeldung.
Im Allgemein würde ich diese Kopiererei über Powershell laufen lassen anstatt VBA. Wesentlich mächtiger und schneller.
VG
Yal
Anzeige
danke, geht dann halt so :-)
24.11.2021 09:16:12
Georg
OK, kein Problem. Dann mache ich es wie beschrieben mit Öffnen/Speichern/Schließen. Ist zwar etwas umständlich, aber geht auch. Und nur das zählt am Schluß. ;- )
;
Anzeige
Anzeige

Infobox / Tutorial

Datei per VBA auf SharePoint speichern


Schritt-für-Schritt-Anleitung

Um eine Datei per VBA auf SharePoint zu speichern, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Verweise aktivieren: Gehe zu "Extras" > "Verweise" und aktiviere "Microsoft Scripting Runtime", um die Funktionen des FileSystemObject nutzen zu können.

  2. VBA-Code erstellen: Verwende den folgenden VBA-Code, um eine Datei von deiner HDD auf SharePoint zu übertragen:

    Sub Kopieren_zu_SP()
        Dim FSO As New FileSystemObject
        Dim QuellDatei As File
        Dim QuellPfad As String
        Dim ZielPfad As String
    
        QuellPfad = Cells(4, 4).Value & Cells(4, 5).Value & Cells(4, 6).Value ' Pfad anpassen
        ZielPfad = Cells(4, 7).Value & Cells(4, 8).Value ' Ziel anpassen
    
        Set QuellDatei = FSO.GetFile(QuellPfad)
        If Not QuellDatei Is Nothing Then
            If MsgBox("Es wird " & vbCr & QuellDatei.Path & vbCr & "nach" & ZielPfad & vbCr & "kopiert.", vbOKCancel) = vbOK Then
                QuellDatei.Copy ZielPfad
            End If
        End If
    End Sub
  3. Anpassungen vornehmen: Stelle sicher, dass die Zellreferenzen (Cells(4, 4) etc.) an deine Daten angepasst sind.

  4. Code ausführen: Führe das Makro aus, um die Datei zu kopieren.


Häufige Fehler und Lösungen

Fehler: Laufzeitfehler 52
Dieser Fehler tritt auf, wenn der Dateiname für den Zielordner zu lang ist. Überprüfe die Länge des Dateinamens und stelle sicher, dass sie die maximale Länge für SharePoint nicht überschreitet.

Fehler: Berechtigungsfehler
Stelle sicher, dass du die richtigen Berechtigungen hast, um auf das SharePoint-Laufwerk zuzugreifen. Möglicherweise musst du dich separat bei SharePoint anmelden.


Alternative Methoden

  1. SharePoint als Laufwerk einbinden: Du kannst SharePoint als Netzlaufwerk verbinden, was das Speichern von Dateien erleichtert. Gehe dazu zu "Dieser PC" und wähle "Netzlaufwerk verbinden".

  2. Powershell verwenden: Eine leistungsstärkere Methode für das Kopieren von Dateien auf SharePoint ist die Verwendung von Powershell. Diese Methode ist schneller und bietet mehr Flexibilität.


Praktische Beispiele

Ein einfaches Beispiel, um eine Excel-Datei von der HDD auf SharePoint zu speichern:

Sub Beispiel_Speichern()
    Workbooks.Open "C:\Users\DeinBenutzer\Desktop\Beispiel.xlsx"
    ActiveWorkbook.SaveAs "https://telekom.sharepoint.de/sites/CS_FB/Freigegebene%20Dokumente/Beispiel.xlsx"
    ActiveWorkbook.Close
End Sub

Stelle sicher, dass die URL korrekt ist und du die notwendigen Berechtigungen hast.


Tipps für Profis

  • Nutze das FileCopy-Kommando nur für lokale Kopien. Bei SharePoint empfiehlt sich der Einsatz des FileSystemObject.
  • Überwache den Status der Dateiübertragung und implementiere Fehlerbehandlungsroutinen, um Laufzeitfehler zu vermeiden.
  • Informiere dich über die spezifischen Anforderungen von vba dir sharepoint und vba filecopy sharepoint, um deine Skripte zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich SharePoint in Excel als Laufwerk einbinden?
Du kannst SharePoint als Netzlaufwerk verbinden, indem du im Datei-Explorer "Dieser PC" wählst und "Netzlaufwerk verbinden" auswählst.

2. Was tun, wenn der Dateiname für den Zielordner zu lang ist?
Reduziere den Dateinamen oder den Pfad, um sicherzustellen, dass die Gesamtlänge die maximale Grenze nicht überschreitet.

3. Kann ich auch ohne VBA Dateien auf SharePoint speichern?
Ja, du kannst Dateien direkt über den Datei-Explorer oder den Browser auf SharePoint hochladen, indem du die Datei einfach hineinziehst oder die Funktion "Hochladen" verwendest.

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