-1

我有我的前端在 excel 和后端作为访问。我每天将这些文件发送给客户。我不希望其他人看到数据库。有没有办法在excel中集成访问,如果我只传输excel文件,访问文件也会自动传输,其他人不知道我的数据库?
数据库应仅保留访问权限。

4

2 回答 2

0

您可以将 Access 数据库作为对象嵌入您的 Excel 文件 ( Insert->Object->Create from file, 选择Display as icon) 并要求用户提取和删除它。但是,如果您手动进行,这对双方来说都有些麻烦。

如果要自动化该过程,请使用以下代码:

Private Const cStrSheetName As String = "Sheet1"
Private Const cStrObjName As String = "EmbeddedFile"

子嵌入文件()
    暗淡 strFile 作为字符串
    暗淡为工作表

    设置 ws = Sheets(cStrSheetName)

    strFile = Application.GetOpenFilename("任何文件 (*.*), *.*", 1, _
        “请选择要嵌入的文件”)

    如果 strFile = "False" 然后退出 Sub

    出错时继续下一步
    ws.Shapes(cStrObjName).Delete

    On Error GoTo ErrorHandler
    ws.OLEObjects.Add(文件名:=strFile, 链接:=False, _
        DisplayAsIcon:=True, IconFileName:="", _
        IconIndex:=0, IconLabel:=strFile).Select
    Selection.Name = cStrObjName

    MsgBox "文件嵌入成功!"

    退出子

错误处理程序:
    MsgBox "无法嵌入文件。错误:" & _
        Err.Number & " - " & Err.Description

结束子

子 ExtractEmbeddedFile()
    暗淡为工作表

    设置 ws = Sheets(cStrSheetName)

    出错时继续下一步
    ws.OLEObjects(cStrObjName).Copy

    If Err.Number Then
        MsgBox "没有嵌入文件!"
        退出子
    万一

    On Error GoTo ErrorHandler
    CreateObject("Shell.Application").Namespace(ActiveWorkbook.Path) _
        .Self.InvokeVerb “粘贴”

    If MsgBox("文件成功解压到" & ActiveWorkbook.Path _
        & vbCrLf & vbCrLf & "你要删除嵌入的" & _
        “从此工作簿中的文件以减小其大小?”,vbYesNo) _
        = vb是 那么
        ws.Shapes(cStrObjName).Delete
    万一

    退出子

错误处理程序:
    MsgBox "提取文件时出错:" & _
        Err.Number & " - " & Err.Description

结束子

这将为您提供两个宏 (EmbedFileExtractEmbeddedFile),您可以将它们分配给工作表中的按钮。

请注意,您需要"Sheet1"在第一行修改为要存储嵌入文件的工作表的名称。

于 2013-01-09T20:52:58.280 回答
0

您不能通过电子邮件或 FTP 不可见地发送 Access 文件,但可以将数据移动到可从 Internet 访问的 SQL Server(或其他)数据库。
然而,这带来了几个问题:
1) 安全
2) odbc DSN
3) 客户端计算机上 odbc 驱动程序的可用性

于 2013-01-09T15:11:22.140 回答