Function 引用值或将值从Sharepoint上关闭的Excel工作簿复制到另一个Excel工作簿

Function 引用值或将值从Sharepoint上关闭的Excel工作簿复制到另一个Excel工作簿,function,vba,sharepoint,excel,Function,Vba,Sharepoint,Excel,我目前正在进行一个项目,以创建多个清单,这些清单在特定单元格中只能有特定的值(资产代码和序列号)。我的清单模板已经完成,它包含一系列VBA编码,以防止人们(在本例中是我工作的工程师)输入不正确的数据 我这样做的方式是使用一些内置的基于VBA的数据验证规则和检查。还有运行txt文件输出和Outlook电子邮件等的宏。包含资产代码和序列号的单元格由这些数据验证规则控制,这些规则将数据和工作簿第二页中的三个列表进行比较 总共将有大约100个不同的工作簿,每个工作簿在表1上有自己独特的清单,而表2在大约

我目前正在进行一个项目,以创建多个清单,这些清单在特定单元格中只能有特定的值(资产代码和序列号)。我的清单模板已经完成,它包含一系列VBA编码,以防止人们(在本例中是我工作的工程师)输入不正确的数据

我这样做的方式是使用一些内置的基于VBA的数据验证规则和检查。还有运行txt文件输出和Outlook电子邮件等的宏。包含资产代码和序列号的单元格由这些数据验证规则控制,这些规则将数据和工作簿第二页中的三个列表进行比较

总共将有大约100个不同的工作簿,每个工作簿在表1上有自己独特的清单,而表2在大约100个工作簿中是相同的。。。如上所述,表2有三个列表: -a列中可能的资产代码列表(约1500个条目)
-F列位置的资产代码列表(约26000个条目) -G列位置的序列号列表(约26000个条目)

每个清单工作簿都将保存到Sharepoint上,以便个人可以编辑清单,而不会与签入和签出发生太多冲突。此外,大多数对这些清单的访问将由在互联网速度较慢的海上环境中工作的工程师执行,因此需要将文件分开并尽可能小。此外,包含有效资产数据的Sheet2将不会有活动链接,因为很多时候在没有互联网连接的情况下访问清单(离线下载和处理)

问题在于,资产代码、所在位置的资产和序列号定期更新和更改(在输出txt/xls转储文件的外部系统中进行跟踪)。假设有一个新的资产进来,这将需要在每个清单工作簿的Sheet2中更新,以便他们可能在该清单工作簿中拥有该新资产

我计划这样做的方式是在Sharepoint上增加一个只有一张Sheet2的主工作簿。我想要的是清单工作簿更新其Sheet2以匹配主工作簿的Sheet2

我计划使用VBA宏按钮来完成此操作。。。i、 e.“更新表2”。。。每隔一段时间,当用户具有良好的internet连接时,他们可以打开各自的清单进行编辑,并单击此“Update Sheet2”按钮,以便获得所有正确的列表

当在清单工作簿上按下“更新Sheet2”按钮时,它会在Sharepoint上读取主工作簿的Sheet2(不打开),并相应地更新自己的Sheet2以匹配

我发现当清单工作簿和主工作簿都位于本地驱动器上时,代码可以执行此操作,但是我无法找到引用Sharepoint上工作簿的方法

基本上,我所学到的唯一VBA编码是从过去几周通过阅读这些论坛学到的,我已经走了这么远,但现在我被卡住了。下面是我的想法,但它不起作用(改编自)。。。我在以下行中不断收到“错误的文件名或编号错误”: 如果Dir(FilePath&FileName)=为空,则

请让我知道你认为哪里出了问题。。。显然,出于某种原因,它不喜欢地址引用。。。我还研究了DAO方法和其他一些方法。。。但这似乎是最简单的,我希望它能起作用。。。目前我只是使用MySite进行检查,它最终将成为一个Sharepoint网站,如:“Documents/”

其自身模块中的完整代码:

Option Explicit

Sub GetDataDemo()
Dim FilePath$, Row&, Column&, Address$, Address1$

 'change constants & FilePath below to suit
 '***************************************
Const FileName$ = "Book2.xlsm"
Const SheetName$ = "Sheet1"
Const NumRows& = 1500
Const NumColumns& = 7
Address1 = ActiveWorkbook.Path
Cells(3, 5) = Address1
FilePath = ActiveWorkbook.Path & "/"

 '''' tried: https://mysite.slb.com/personalsite/vsidebottom/Book2/Shared Documents
'***************************************
 ''''
DoEvents
Application.ScreenUpdating = False
If Dir(FilePath & FileName) = Empty Then
    MsgBox "The file " & FileName & " was not found", , "File Doesn't Exist"
    Exit Sub
Else
                MsgBox "File Found!"
End If
For Row = 1 To NumRows
    For Column = 1 To NumColumns
        Address = Cells(Row, Column).Address
        Cells(Row, Column) = GetData(FilePath, FileName, SheetName, Address)
        Columns.AutoFit
    Next Column
Next Row
ActiveWindow.DisplayZeros = False
End Sub


Private Function GetData(Path, File, Sheet, Address)
Dim Data$
Data = "'" & Path & "[" & File & "]" & Sheet & "'!" & _
Range(Address).Range("A1").Address(, , xlR1C1)
GetData = ExecuteExcel4Macro(Data)
End Function

将SharePoint文档库引用为UNC路径(使用WebDAV地址访问库)。确保系统上的WebServices服务已打开

FilePath
变量设置为如下字符串:

\\mysite.slb。com@SSL\davwwroot\personalsite\vsidebottom\Book2\Shared%20文档

如果要直接访问文本文件,请将其设置为:

\\mysite.slb。com@SSL\davwwroot\personalsite\vsidebottom\Book2\Shared%20Documents\Test\u Text1.txt

请看一看完整的解释


----旁注---文斯;将来,让你的问题更简洁,你就更有可能得到答案!它将在将来帮助你。没有什么比等待别人回答更令人沮丧的了

注:Book2目前是主工作簿,我在Book3中有上述代码,该代码也保存在同一sharepoint目录中。