【问题标题】:Excel front end and Access back end on SharepointSharepoint 上的 Excel 前端和 Access 后端
【发布时间】:2016-01-11 14:59:53
【问题描述】:

我有一个内置在 Excel 2010 中的 VBA 应用程序,并使用 Access 2010 作为后端来存储所有数据。我需要升级到 SharePoint 以允许用户访问它,但我开始怀疑我是否会遇到此问题。如果我将这两个文件都放在文档库中,那会起作用吗?还是我会遇到问题?鉴于我的 Excel 前端已经完全开发,目前我无法更改它,除了将所有数据存储在 Excel 中之外,还有其他选择吗?

【问题讨论】:

  • 我认为,您可以直接链接到该网站,xyz/sites/abc/mydb.accdb,我不是 100%,但可以肯定访问和共享点是为了和谐地工作 :)
  • 我试过了,但是没用。
  • 共享点列表,链接到本地​​ Access DB,这可能吗?
  • 我不熟悉 SharePoint 列表,但 Access DB 只是用于存储数据。如果我能够将其存储在 SharePoint 列表中并将其用作 Excel 的后端,那将是可行的。这也可以使用 SharePoint 365 完成吗?

标签: vba excel ms-access sharepoint


【解决方案1】:

我不完全确定您想要实现什么,但您可以将 Excel 和 Access 文件存储在文档库中。每个用户都应该下载这两个文件并在他们的本地机器上执行 VBA 代码。我不知道可以帮助您链接 Access 和执行 VBA 代码以及在 SharePoint Web 库/视图/界面中基于此 VBA 代码显示一些 Excel 数据的机制。 SharePoint 只是没有理解或执行 VBA 宏的组件。文档库可用于存储文档和文档的元数据。如果您尝试从 excel Web 查看器打开 excel,它可能会抛出错误,因为您的 excel 启用了宏并且查看器不支持它。

一旦我必须创建 excel 报告并将其直接显示在 excel Web 查看器中,我必须编写一个 C# 程序,该程序将使用已处理的数据生成普通 xlsx 文件,然后将其作为普通 xlsx 上传,以便 excel Web 查看器可以打开。

【讨论】:

  • 对于这个项目,我只是想将文档存储在 SharePoint 库中,因此让用户下载这两个文件是可行的。但是,如果用户更改了数据库中的数据,如何通过 VBA 将该文件加载回 SharePoint 文档库?还有一种方法可以通过 VBA 来检查是否有人试图在 SharePoint Web 查看器上打开文档,如果是,请阻止它打开?
【解决方案2】:

我发现最好的方法是让用户从 SharePoint(pain) 打开它,或者只是将文件保存在他们的计算机上。然后,当 Excel 开始将驱动器映射到 SharePoint 站点时,将 Access 数据库文件从映射驱动器传输到 temp 文件夹,然后删除映射的驱动器。然后,当进行更改时,只需重复相同的过程,但将 Access 文件复制到映射的驱动器。

我应该提到,在我的环境中,用户不经常更新此信息,因此这工作正常,但是如果用户经常更新数据,这不是最佳途径。

Sub GetSharePointFile()
    Dim objNet as object
    Dim strDriveLetter as String
    Dim strSharePointDatabaseFolder as String
    Set objNet = CreateObject("WScript.Network")

    On Error GoTo AUTH_Connection:
    strDriveLetter = GetOpenDriveLetter
    strSharePointDatabaseFolder = "<SharePoint site>"
    objNet.MapNetworkDrive strDriveLetter, strSharePointDatabaseFolder

On Error GoTo ErrHandler:
    <code to copy file(s) from mapped drive to destination folder> 

    Exit Sub

AUTH_Connection:

    Dim xlApp As New Excel.Application
    Dim xlDoc As Workbook
    On Error GoTo ErrHandler:

    Set xlApp = CreateObject("Excel.Application")
    Set xlDoc = xlApp.Workbooks.Add
    ' Trying to upload the file below will force IE to open and prompt user for their Username and Password which will authenticate them
    xlDoc.SaveAs FileName:="<SharePointSite>", FileFormat:=xlWorkbookNormal, AddToMru:=False
    xlDoc.Close
    xlApp.Quit

    objNet.MapNetworkDrive strDriveLetter, strSharePointDatabaseFolder
    Resume Next
ErrHandler:
    MsgBox Err.Code, Err.Description
End Sub

Function GetOpenDriveLetter() As String
Dim colDisks As Variant
Dim objWMIService As Object
Dim objDisk As Variant

  'Get all used Drive-Letters
  Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
  Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")

  'Loop through all Drive-Letters
  For Each objDisk In colDisks
      For i = 67 To 90
          'If letter is in use store chr number as 'j' and exit loop
          If i = Asc(objDisk.deviceID) Then
              j = i
              Exit For
          'If not in use and the character value of i is not blank, then set and exit
          ElseIf i > j And Chr(i) <> "" Then
              GetOpenDriveLetter = Chr(i) & ":"
              Exit Function
          End If
      Next i
  Next objDisk
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多