将文件上传到 SharePoint DocLib 的 VBScript [英] VBScript to Upload file to SharePoint DocLib

查看:26
本文介绍了将文件上传到 SharePoint DocLib 的 VBScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试自动将文件上传到 SharePoint 文档库.我遇到了无数帖子(在这个论坛和其他论坛上),但似乎无法得到一些有用的东西.虽然我做过一些简单的 VBA 和 VB 脚本,但我并不是真正的开发人员.

I'm trying to automate the uploading of files to a SharePoint document library. I've run across countless posts (on this forum and others) but can't seem to get something that works. I'm not really a developer, though I have done some simple VBA and VB Script.

我正在寻找的是一种将文件(特别是 .xlsx 和 .zip 类型)从本地计算机自动上传到特定 SharePoint 文档库的解决方案(让我们使用.../sharepoint/Metrics/Forms/AllItems.aspx"作为列表)使用 VBA 或 VB 脚本.

What I'm looking for is a solution to automatically upload a file (.xlsx and .zip types specifically) from a local machine to a specific SharePoint document library (let's use ".../sharepoint/Metrics/Forms/AllItems.aspx" as the list) using VBA or VB Script.

在研究这个问题时,这里有一些其他想法/评论,希望能帮助有人为我提供解决方案:

In researching the issue, here are some other thoughts/comments that hopefully will help someone in providing me a solution:

  • 我无法更改 SharePoint 服务器上的任何内容
  • 上传文件时我需要能够传递凭据
  • 我只是在寻找 VBA/VBS 解决方案(没有 C# 或 .NET)
  • 可能上传时需要设置元数据
  • I cannot change anything on the SharePoint server
  • I need to be able to pass credentials when uploading the file
  • I am only looking for VBA/VBS solutions (no C# or .NET)
  • I might need to set metadata when uploading

在此先感谢您的帮助.

推荐答案

以下 VBScript 使用 FrontPage RPC 上传文件:

The following VBScript uploads a file using FrontPage RPC:

Function StringToByteArray(str)
   Set stream = CreateObject("ADODB.Stream")
   stream.Open
   stream.Type = 2 ''adTypeText
   stream.Charset = "ascii"
   stream.WriteText str
   stream.Position = 0
   stream.Type = 1 ''adTypeBinary
   StringToByteArray = stream.Read()
   stream.Close
End Function

Sub UploadFile(sourcePath, siteUrl, docName, title, checkincomment, userName, password)

   strHeader = "method=put+document%3a12.0.4518.1016" + _
      "&service_name=%2f" + _
      "&document=[document_name=" + Escape(docName) + _
      ";meta_info=[vti_title%3bSW%7c" + Escape(title) + "]]" + _
      "&put_option=overwrite,createdir,migrationsemantics" + _
      "&comment=" + _
      "&keep%5fchecked%5fout=false" + vbLf
   bytearray = StringToByteArray(strHeader)

   Set stream = CreateObject("ADODB.Stream")
   stream.Open
   stream.Type = 1 ''adTypeBinary
   stream.Write byteArray

   Set stream2 = CreateObject("ADODB.Stream")
   stream2.Open
   stream2.Type = 1 ''adTypeBinary
   stream2.LoadFromFile sourcePath
   stream2.CopyTo stream, -1
   stream.Position = 0

   Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
   xmlHttp.open "POST", siteUrl + "/_vti_bin/_vti_aut/author.dll", false, userName, password
   xmlhttp.setRequestHeader "Content-Type","application/x-vermeer-urlencoded"
   xmlhttp.setRequestHeader "X-Vermeer-Content-Type","application/x-vermeer-urlencoded"
   xmlhttp.setRequestHeader "User-Agent", "FrontPage"
   xmlHttp.send stream

   If xmlHttp.status = 200 Then

       If Instr(xmlHttp.responseText, "successfully") = 0 Then

          MsgBox "ERROR: " & vbCrLf & xmlHttp.responseText       

       Else

          ''Checkin

          strHeader = "method=checkin+document%3a12.0.4518.1016" + _
             "&service_name=%2f" + _
             "&document_name=" & Escape(docName) + _
             "&comment=" + Escape(checkincomment) + _
             "&keep%5fchecked%5fout=false" + vbLf

          Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
          xmlHttp.open "POST", siteUrl + "/_vti_bin/_vti_aut/author.dll", false, userName, password
          xmlhttp.setRequestHeader "Content-Type","application/x-vermeer-urlencoded"
          xmlhttp.setRequestHeader "X-Vermeer-Content-Type","application/x-vermeer-urlencoded"
          xmlhttp.setRequestHeader "User-Agent", "FrontPage"
          xmlHttp.send strHeader



       End If

   End If

   If xmlHttp.status / 100 <> 2 Then
      MsgBox "ERROR: status = " & xmlHttp.status & vbCrLf & xmlHttp.responseText
   End If

End Sub

UploadFile "C:UsersmyusernameDesktopTest File.zip", _
    "http://computername/Sites/sitename", _
    "Requirements/Test File.zip", _
    "Test title", _
    "Test checkin comment", _
    "MYDOMAINmyusername", "mypassword"
MsgBox "Done"

请注意,文件名只能由 ASCII 字符组成.否则,上述脚本将无法工作.

Please note that the file name should consist of ASCII characters only. Otherwise, the above script will not work.

这篇关于将文件上传到 SharePoint DocLib 的 VBScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆