0

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

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

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

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

问题是资产代码、位置中的资产和序列号会定期更新和更改(在输出 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/共享文件/"

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

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
4

1 回答 1

0

将 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

请查看此博客文章以获取完整说明。

-----旁注----文斯;让您的问题在未来更简洁,您将更有可能收到答案!查看此常见问题解答以了解将来会对您有所帮助的问题。没有什么比等人回答更令人沮丧的了!

于 2013-09-09T13:41:04.297 回答