我目前正在创建一个项目以创建多个清单,这些清单在特定单元格(资产代码和序列号)中只能具有特定值。我的清单模板已经完成,它包含了一堆VBA编码,以防止人们(我的工程师在这种情况下)输入错误的数据。将Sharepoint上已关闭的Excel工作簿中的值引用或复制到另一个Excel工作簿
我这样做的方式是使用一些基于内置VBA的数据验证规则和检查。还有宏运行txt文件输出和Outlook电子邮件等。包含资产代码和序列号的单元由这些DataValidation规则控制,该规则将数据与工作簿的第二张表中的三个列表进行比较。
总共有大约100个不同的工作簿,每个工作簿在Sheet1上都有自己的唯一清单,而Sheet2在100个左右的工作簿中是相同的......如前所述,Sheet2有三个列表: - 列A中的可能资源代码(大约1500个条目)
-列F中位置的资产代码列表(大约26000个条目) -列G中位置的序列号列表(大约26000个条目)
每个清单工作簿都将保存到Sharepoint中,以便个人可以编辑清单,而不会与检入和检出冲突过多。此外,大多数访问这些清单的工作将由在离岸环境中工作的互联网相当慢的工程师执行,因此需要保持文件的分离和尽可能小。另外,包含有效资产数据的Sheet2将不会有活动链接,因为根本没有互联网连接访问清单(下载和离线处理)的时间很长。
问题是位置和序列号中的资产代码,资产定期更新并正在更改(在输出txt/xls转储文件的外部系统中进行跟踪)。假设有一个新的资产进入,这需要在每个清单工作簿的Sheet2中进行更新,以便他们可能在该清单工作簿中拥有该新资产。
我打算这样做的方法是在Sharepoint上只有一个附加的MasterWorkbook,它只有一张Sheet2。我想要的是清单工作簿更新其Sheet2以匹配MasterWorkbook的Sheet2。
我打算用VBA宏按钮来完成这项工作......即“UPDATE Sheet2”...每当一个用户有一个很好的互联网连接时,他们可以打开他们各自的Manifest用于编辑并单击此“更新工作表2”按钮,以便它们具有所有正确的列表。
在Manifest Workbook上按下“更新工作表2”按钮时,它将读取Sharepoint上MasterWorkbook的Sheet2(不打开它)并更新自己的Sheet2以相应地匹配。
当Manifest Workbook和MasterWorkbook都在本地驱动器上时,我发现代码能够做到这一点,但是我一直无法找到在Sharepoint上引用工作簿的方式。
基本上,我所学到的唯一的VBA编码是从前几周通过阅读这些论坛,我已经得到了这么多,但现在我卡住了。下面是我的想法,但它不起作用(改编自http://j-walk.com/ss/excel/tips/tip82.htm)...我不断收到'Bad File Name or Number Error'在以下行: If Dir(FilePath & FileName)= Empty Then
请让我知道你认为哪里出了问题......很明显,它不喜欢地址参考出于某种原因...我也看了DAO方法和其他一些方法...但是这似乎是最简单的,我很喜欢这个工作...目前我只是用MySite进行检查,它最终将成为一个Sharepoint站点如:“https://teamspace.slb.com/sites/INMWL/MWL/MH/Shared文档/”
在其自身的模块的完整代码:
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
注意Book2目前是MasterWorkbook,我在Book3中有上述代码,它也保存在同一个SharePoint目录中。 – 2013-05-03 11:53:34