Задать вопрос
x67
@x67

Какие методы обмена информацией с удаленными объектами через excel vba существуют?

Пишу скрипт, который будет выполняться на сервере 24/7, что можно использовать для того, что бы пользователь мог зайдя в книгу excel по выполнению макроса получить данные с сервера? Я пока что придумал только дикий костыль в виде экспорта почты из outlook, но хотелось бы обойтись без лишних программ и с минимальным количеством библиотек. Возможно вы знаете решение через google spreadsheets (пишу на python)? Однако excel предпочтительнее.
  • Вопрос задан
  • 281 просмотр
Подписаться 1 Оценить 5 комментариев
Решения вопроса 1
honor8
@honor8
Принципы быстродействия VBA в описании
https://toster.ru/q/394895 - любой драйвер на выбор :)
К таблице Excel лучше так не подключаться (нельзя чтобы файл был занят).
Option Explicit
'123456789012345678901234567890123456h8nor@ya567890123456789012345678toster56789

Sub TestADO()
  Dim Conn As Object, Rec As Object
  
  On Error GoTo ErrMsg ' Создание подключения через драйвер
    Set Conn = CreateObject("ADODB.Connection") ' Открываем Connection
    Conn.ConnectionTimeout = 5
    Conn.Mode = 1 ' 1 = adModeRead, 2 = adModeWrite, 3 = adModeReadWrite
    Str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $dbPath & ";"
    ' Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""
    'Str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & $dbPath & ";"
    'Str = Str & "Jet OLEDB:Engine Type=6;" ' Тип подключения (не используется)
    Str = Str & "Jet OLEDB:Encrypt Database=False;"
    Str = Str & "Jet OLEDB:Database Password=" & $passDB & ";"
    ' Системная таблица Access 2003 (файлы *.mdb) 
    'Str = Str & "Jet OLEDB:System database=" & $mdwPath
    
    Conn.Open ConnectionString:=Str ', UserId:="$admin", Password:=""
    Debug.Print "Conn.State="; Conn.State
    
    Set Rec = CreateObject("ADODB.Recordset") ' Создаём RecordSet для чтения данных
    ' ...
    Set Rec = Nothing: Set Conn = Nothing
  On Error GoTo 0: Exit Sub
  
ErrMsg:
  MsgBox Str & String(2, vbCrLf) & "Provider=" & Conn.Provider, _
    vbOKOnly + vbCritical, "Error: " & Err.Number & ", AppVer: " _
    & Val(Application.Version): Set Rec = Nothing: Set Conn = Nothing
End Sub
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы