интеграция и интеграция

У меня есть внешний интерфейс в excel и backend как доступ. Я отправляю эти файлы клиенту каждый день. Я не хочу, чтобы другие видели базу данных. Есть ли способ интегрировать доступ в excel так, что если я передаю только файл excel, файл доступа также автоматически передается, а другие не узнают о моей базе данных?
база данных должна оставаться только в доступе.

1
добавлено отредактировано
Просмотры: 2
nl ja de
почему вам нужно перенести свою базу данных с файлом? Можете ли вы настроить файл XL таким образом, чтобы в нем было все, что вам нужно от доступа?
добавлено автор Scott Holtzman, источник

2 ответы

Вы не можете отправлять электронную почту или FTP файл доступа незаметно, но вы можете перенести данные в базу данных SQL Server (или другую), доступную из Интернета.
Однако это создает несколько проблем:
1) безопасность
2) odbc DSN
3) наличие драйвера odbc на клиентской машине

0
добавлено

You can embed the Access database as an object into your Excel file (Insert->Object->Create from file , select Display as icon) and ask the user to extract and remove it. However, this is a bit cumbersome for both sides if you do it manually.

Если вы хотите автоматизировать процесс, используйте следующий код:

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

Sub EmbedFile()
    Dim strFile As String
    Dim ws As Worksheet

    Set ws = Sheets(cStrSheetName)

    strFile = Application.GetOpenFilename("Any file (*.*), *.*", 1, _
        "Please select a file to embed")

    If strFile = "False" Then Exit Sub

    On Error Resume Next
    ws.Shapes(cStrObjName).Delete

    On Error GoTo ErrorHandler
    ws.OLEObjects.Add(Filename:=strFile, Link:=False, _
        DisplayAsIcon:=True, IconFileName:="", _
        IconIndex:=0, IconLabel:=strFile).Select
    Selection.Name = cStrObjName

    MsgBox "File succesfully embedded!"

    Exit Sub

ErrorHandler:
    MsgBox "Could not embed file. Error: " & _
        Err.Number & " - " & Err.Description

End Sub

Sub ExtractEmbeddedFile()
    Dim ws As Worksheet

    Set ws = Sheets(cStrSheetName)

    On Error Resume Next
    ws.OLEObjects(cStrObjName).Copy

    If Err.Number Then
        MsgBox "No file embedded!"
        Exit Sub
    End If

    On Error GoTo ErrorHandler
    CreateObject("Shell.Application").Namespace(ActiveWorkbook.Path) _
        .Self.InvokeVerb "Paste"

    If MsgBox("File succesfully extracted to " & ActiveWorkbook.Path _
        & vbCrLf & vbCrLf & "Do you want to remove the embedded " & _
        "file from the this workbook to reduce its size?", vbYesNo) _
        = vbYes Then
        ws.Shapes(cStrObjName).Delete
    End If

    Exit Sub

ErrorHandler:
    MsgBox "Error extracting file: " & _
        Err.Number & " - " & Err.Description

End Sub

Это даст вам два макроса ( EmbedFile и ExtractEmbeddedFile ), которые вы можете назначить кнопке на вашем листе.

Обратите внимание, что вам необходимо изменить «Sheet1» в первой строке на имя листа, в который вы хотите сохранить встроенный файл.

0
добавлено
Я отредактировал ответ. НТН!
добавлено автор Peter Albert, источник
Хотя код, вероятно, можно расширить, чтобы повторно подключить любые существующие подключения к выделенному доступу, я действительно не уверен, что это правильный подход. Знаете ли вы, что вы также можете использовать таблицы SQL для Excel? Поэтому вместо хранения (и обработки?) Данных в Access, просто сделайте это в Excel тоже!
добавлено автор Peter Albert, источник
это было бы большой помощью, если бы вы могли рассказать мне, как извлекать и удалять с помощью vba.
добавлено автор user1958648, источник
Большое спасибо, Питер. Теперь, как я могу использовать встроенный файл acess в моем excel vba? Я имею в виду, есть ли какой-либо способ опробовать встроенный файл mdb, не открывая его с помощью vba ??
добавлено автор user1958648, источник