通过VBA从Excel将项目添加到SharePoint列表

时间:2018-06-19 20:41:53

标签: excel-vba access-vba sharepoint-2013 vba excel

我想我首先是想看看这是否完全可行和可行。

我的任务是创建一个易于使用的表单,供用户在Excel中填写。完成后,他们单击“提交”按钮,该按钮会自动将表单通过电子邮件发送给适当的一方进行审核,并分配唯一的ID供以后参考。这部分很简单,已经完成。

现在,我没有经验的第二部分是通过VBA获取信息以存储在SharePoint列表中。这个想法是让接收表单的人能够打开它,查看表单并单击命令按钮以将其上载到SharePoint列表(创建一个新项目)。我找不到单独通过VBA来执行此操作的任何工作方法。

我现在的想法是可能使用Access作为中间人。有没有办法让我从Excel工作簿中运行一个宏,以打开一个与预期的SharePoint列表连接的Access数据库,添加一个新项目/行(最好将所述工作簿作为附件),保存并关闭?然后,该项目将同时添加到SP列表中,但我不知道这是否可行。

任何指导都一如既往地受到赞赏,我认为这是我无法通过一些简单的谷歌搜索就可以实现的。

更新:我设法拼凑了一些我发现的代码(尽管需要进行大量测试才能确保它与其他用户兼容),这些代码将从Excel运行一个子例程,从而打开指定Access数据库,然后在Access中调用一个公共函数,该函数将修改Excel文件中的数据,从而将该项目添加到SP列表中。我不确定这有多干净,到目前为止它似乎还可以,但是我真的需要一种方法将Excel文件本身作为附件添加到记录中,以便分别将其附加到SP项目中。

这是Excel中的子程序。我要做的只是将表单上输入的数据拉到一个隐藏的工作表中,然后将工作表另存为用于数据导入的临时文件。

    Sub AccessImport()
Dim wb As Workbook, wb2 As Workbook
Dim AC As Object
Dim ret As Byte
Dim TempFilePath As String, TempFileName As String

Set wb = ActiveWorkbook

Worksheets("Table").Copy

Set wb2 = ActiveWorkbook

TempFilePath = Environ$("temp") & "\"
TempFileName = "AccessUpload.xls"

wb2.SaveCopyAs TempFilePath & TempFileName
wb2.Close False

    Set AC = CreateObject("Access.Application")
    With AC
        .OpenCurrentDatabase "C:\TEMP\Database2.accdb", False
        ret = .Run("GetXLData")
    End With

    Kill TempFilePath & TempFileName

End Sub

Access打开并运行GetXLData函数。

Public Function GetXLData() As Byte
Dim ret As Byte

    On Error GoTo ErrHandler
    ret = 1
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "custom list", "C:\TEMP\AccessUpload.xls", True
    ret = 0

ErrHandler:
GetXLData = ret
End Function

这将仅用于每次运行时用一条记录更新数据库,必须有一种方法可以通过指定文件路径在“附件”字段中添加附件,每次都相同?

0 个答案:

没有答案