2017-11-22 4 views
1

Ich versuche, eine lokale XML-Datei in SharePoint online mit VBA hochladen. Die Datei wird automatisch in SharePoint hochgeladen, nachdem der Benutzer die Datei gespeichert hat. Das Konzept ist, nachdem der Benutzer die XLSM-Datei speichert, würde es einen neuen Ordner mit der kopierten Datei erstellen und die kopierte Datei in den Ordner in SharePoint hochladen. Nach dem Upload wird der Ordner gelöscht.VBA - Laufzeitfehler 1004

Aber ich bin nicht in der Lage, die Datei in den Ordner aufgrund

Laufzeitfehler 1004

Ich überprüfe die möglichen Gründe zu speichern, der Dateiname/Pfad existieren, den Ordner wurde erfolgreich erstellt.

Die Datei wird nicht von einem anderen Programm verwendet, nur Excel führt die Datei aus.

Der Ordner ist neu erstellt, es ist ein leerer Ordner, enthält keine Datei mit dem gleichen Namen.

enter image description here

ich alle Wege taten überprüfen und sie sind alle richtig.

Dies ist mein Code

Private Sub Workbook_AfterSave(ByVal Success As Boolean) 

Dim UploadToSharepoint As Boolean 

Dim SharePointLib As String 
Dim myPath As String 
Dim folderPath As String 
Dim objNet As Object 
Dim FS As Object 
Dim copyPath As String 
Dim copyFilePath As String 

folderPath = Application.ActiveWorkbook.path 
myPath = Application.ActiveWorkbook.FullName 
SharePointLib = "https://company.com/folder/subfoler" 
copyPath = folderPath + "\copyPath" 
MsgBox "This is the folderPath = " & folderPath & vbNewLine & "This is the filepath = " & myPath & vbNewLine & "The copyPath is = " & copyPath 

If Not FolderExists(copyPath) Then 
    FolderCreate (copyPath) 
End If 

SharePointLib = SharePointLib & FileNameWithExt(myPath) 
ThisWorkbook.SaveCopyAs (copyPath) 

Exit Sub 

loadFailed: 
UploadToSharepoint = False 

End Sub 

Jede Hilfe und Anregungen geschätzt werden. Danke im Voraus.

+0

Sie versuchen die Datei mit einem Namen 'C zu speichern: \ Users \ Jian.Chen2 \ Desktop \ Copypath', aber dieser Name ist bereits von einem Verzeichnis, das Sie erstellt. – YowE3K

Antwort

4

Ihr copyPath ist nur ein Ordner, aber das Argument SaveCopyAs sollte ein vollständiger Pfad mit Dateiname sein.

Versuchen Sie folgendes: ThisWorkbook.SaveCopyAs copyPath & "\filename.xlsx"

+2

Sollte 'filename.xlsm' sein (weil es eine Makro-fähige Arbeitsmappe ist), aber ansonsten sollte das gut funktionieren. :) – YowE3K

Verwandte Themen