将列表作为范围(或固定表名)从SharePoint导入Excel
下面的代码可以从SharePoint中提取列表并将其导入Excel。我的问题是,它将其作为表而不是范围导入,并且我无法自动将其转换为范围,因为每次运行脚本时表名都不同(表1、表2等等) 我的问题是:我可以直接从SharePoint导入列表作为Excel范围,这样我就不必转换它了吗?如果不是,是否可以使每次运行导入过程时导入表的名称都是fix 这是我的密码:将列表作为范围(或固定表名)从SharePoint导入Excel,excel,vba,sharepoint,Excel,Vba,Sharepoint,下面的代码可以从SharePoint中提取列表并将其导入Excel。我的问题是,它将其作为表而不是范围导入,并且我无法自动将其转换为范围,因为每次运行脚本时表名都不同(表1、表2等等) 我的问题是:我可以直接从SharePoint导入列表作为Excel范围,这样我就不必转换它了吗?如果不是,是否可以使每次运行导入过程时导入表的名称都是fix 这是我的密码: Sub SharePoint_Import() Dim objMyList As ListObject
Sub SharePoint_Import()
Dim objMyList As ListObject
Dim objWksheet As Worksheet
Dim strSPServer As String
Const SERVER As String = "xxxx.xxxxx.xxx.net/xxxx/xxxx" 'SP server
Const LISTNAME As String = "{1234567-1234-1234-1234-1234567891}" 'SP List ID
Const VIEWNAME As String = ""
Set RData = Sheets("rawdata") 'reset import sheet
RData.UsedRange.ClearContents
strSPServer = "https://" & SERVER & "/_vti_bin" '<- _vti_bin is necessary
Set objWksheet = RData
Set objMyList = objWksheet.ListObjects.Add(xlSrcExternal, Array(strSPServer, LISTNAME, VIEWNAME), False, , Range("A1"))
Set objMyList = Nothing
Set objWksheet = Nothing
End Sub
子SharePoint\u导入()
作为ListObject的Dim objMyList
将objWksheet设置为工作表
将strSPServer设置为字符串
常量服务器为String=“xxxx.xxxxx.xxx.net/xxxx/xxxx”'SP服务器
Const LISTNAME As String=“{1234567-1234-1234-1234-1234567891}”SP列表ID
Const VIEWNAME As String=“”
设置RData=图纸(“rawdata”)'重置导入图纸
RData.UsedRange.ClearContents
strSPServer=“https://”&SERVER&“/\u vti\u bin”执行此操作
[1] 将RData.UsedRange.ClearContents
更改为RData.Cells.Clear
。这将完全清除纸张。删除格式、文本、表格等
[2] 导入表后,添加此代码。因为只有一个表,所以可以使用表号来处理它
Dim tbl As ListObject
Set tbl = RData.ListObjects(1)
Dim tblRng As Range
Set tblRng = tbl.Range
'~~> Convert table to range
tbl.Unlist
'~~> Comment this in case you do not
'~~> want to remove the formatting
With tblRng
.Interior.ColorIndex = xlColorIndexNone
.Font.ColorIndex = xlColorIndexAutomatic
.Borders.LineStyle = xlLineStyleNone
End With
您可以使用ADODB查询Sharepoint列表。检查以下代码(未经测试,因为我没有可用的Sharepoint,但在过去使用过类似的代码)
是的,这个解决方案即使在使用动态表名的情况下也能完美地工作。非常感谢。
Const SERVER As String = "xxxx.xxxxx.xxx.net/xxxx/xxxx" 'SP server
Const LISTNAME As String = "{1234567-1234-1234-1234-1234567891}" 'SP List ID
Dim connStr As String
Dim conn As New ADODB.Connection
Dim rs As ADODB.Recordset
connStr = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=1;RetrieveIds=Yes;" _
& "DATABASE=" & SERVER _
& ";LIST=" & LISTNAME & ";"
conn.Open connStr
Set rs = conn.Execute("select * from list")
Dim rData As Worksheet
Set rData = thisworknbook.Sheets("rawdata") 'reset import sheet
rData.UsedRange.ClearContents
rData.Range("A1").CopyFromRecordset rs
conn.Close