【问题标题】:Referencing or Copying Values from a closed Excel Workbook on Sharepoint to another Excel workbook将 Sharepoint 上关闭的 Excel 工作簿中的值引用或复制到另一个 Excel 工作簿
【发布时间】:2013-09-09 21:41:04
【问题描述】:

我目前正在开展一个项目,以创建多个清单,这些清单只能在特定单元格中具有某些值(资产代码和序列号)。我的清单模板已经完成,它包含一堆 VBA 编码,以防止人们(在这种情况下是我工作的工程师)输入错误的数据。

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

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

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

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

我计划这样做的方法是在 Sharepoint 上添加一个只有 Sheet2 的 MasterWorkbook。我想要的是清单工作簿更新他们的 Sheet2 以匹配 MasterWorkbook 的 Sheet2。

我计划使用 VBA 宏按钮完成此操作...即“更新 Sheet2”...每隔一段时间,当用户有良好的互联网连接时,他们可以打开各自的清单编辑并单击此“更新 Sheet2”按钮,以便他们拥有所有正确的列表。

当在 Manifest Workbook 上按下“更新 Sheet2”按钮时,它会读取 Sharepoint 上 MasterWorkbook 的 Sheet2(不打开它)并相应地更新自己的 Sheet2 以匹配。

当 Manifest Workbook 和 MasterWorkbook 都在本地驱动器上时,我发现代码能够执行此操作,但是我无法找到在 Sharepoint 上引用 Workbook 的方法。

基本上我学到的唯一 VBA 编码是在过去几周通过阅读这些论坛,我已经到了这一步,但现在我被困住了。以下是我的想法,但它不起作用(改编自http://j-walk.com/ss/excel/tips/tip82.htm)...我在以下行中不断收到“错误的文件名或编号错误”: If Dir(FilePath & FileName) = Empty Then

请让我知道您认为出了什么问题...显然由于某种原因它不喜欢地址引用...我还查看了 DAO 方法以及其他一些方法...但这似乎最简单,我希望它能够工作......目前我只是使用 MySite 进行检查,它最终将是一个 Sharepoint 站点,例如:“https://teamspace.slb.com/sites/INMWL/MWL/MH/Shared 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

【问题讨论】:

  • Note Book2 目前是 MasterWorkbook,我在 Book3 中有上面的代码,它也保存在同一个共享点目录中。

标签: function vba sharepoint excel


【解决方案1】:

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

将您的 FilePath 变量设置为等于这样的字符串:

\\mysite.slb.com@SSL\DavWWWRoot\personalsite\vsidebottom\Book2\Shared%20Documents

如果您要直接访问文本文件,请按如下方式设置:

\\mysite.slb.com@SSL\DavWWWRoot\personalsite\vsidebottom\Book2\Shared%20Documents\Test_Text1.txt

查看this blog post 以获得完整说明。

-----SideNote----文斯;让您的问题在未来更简洁,您将更有可能收到答案! Check out this FAQ on asking questions 以后会对你有所帮助。没有什么比等人回答更令人沮丧的了!

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多