VBA Mac подключиться к серверу SQL с драйвером ActualTech ODBC

Я уже некоторое время работаю над своей проблемой, и мне кажется, что я не могу найти точного и рабочего ответа, так что вот я... Я новичок в vba, должен признать...,

Моя проблема заключается в следующем:

Я работаю на Mac OS X Yosemite с MS Office 2011 и пытаюсь подключить свою книгу Excel к SQL-базе данных. Это должно быть сделано через vba, так как позже я хочу прочитать данные из базы данных sql, а также записать данные в базу данных. Я не мог найти способ установить соединение с этой базой данных. Я даже скачал актуальный драйвер odbc и настроил свой dsn (хотя я не был уверен, правильно ли я это сделал, не смог найти способ сделать это с помощью sql-сервера на домашней странице....)

Следующий код это все, что я мог найти, но я все еще получаю ошибки здесь:

strSRV = "mysql01.gutknecht-net.com"
strDB = "gi_kunden"
sqlLogin = "TEST" 'has to be changed
sqlPW = "TEST_PW" 'has to be changed

strConn = "ODBC;DSN=" & strSRV & ";UID=" & sqlLogin & ";PWD=" & sqlPW & ";Database=gi_kunden"

With Sheets("Firma").ListObjects
    sqlCommand = "Select * From tbl_firma"
    .Add(SourceType:=0, Source:=strConn, LinkSource:=True, Destination:=ActiveWorkbook.Sheets("Firma").Range("A2")).QueryTable 'Get an error here
    .CommandText = Array(sqlCommand)
End With

With Sheets("Person").ListObjects
    sqlCommand = "Select * From tbl_person"
    .Add(SourceType:=0, Source:=strConn, LinkSource:=True, Destination:=ActiveWorkbook.Sheets("Person").Range("A2")).QueryTable 'Get an error here
    .CommandText = Array(sqlCommand)
End With

Также попробовал это со следующим кодом:

strConn = "Provider=SQLNCLI10;" & _
          "Server=" & strSRV & ";" & _
          "Database=" & strDB & ";" & _
          "UID=" & sqlLogin & ";" & _
          "PWD=" & sqlPW & ";"

но это все равно не сработало...

Если бы кто-нибудь мог помочь мне здесь, я был бы очень признателен. Если вам нужна дополнительная информация, просто скажите так:)

2 ответа

Решение

Я наконец получил это работающий.........:)

Я изменил код из кода VBA для извлечения данных из Mysql DB в Mac Excel 2011 и адаптировал его к следующему:

Sub SqlConnection()
    Dim sqlstring As String
    Dim connstring As String
    Dim sLogin As String
    sLogin = "Uid=$;Pwd=$;"
    sqlstringfirma = "select * from gi_kunden.tbl_firma"
    sqlstringperson = "select * from gi_kunden.tbl_person"
    connstring = "ODBC;DSN=KundeDB;" & sLogin

    ActiveWorkbook.Sheets("Firma").Select
    ActiveSheet.Range("A1:T2000").Clear

    Dim qt As QueryTable
    For Each qt In ActiveSheet.QueryTables
        qt.Delete
    Next qt
    With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("A1"), Sql:=sqlstringfirma)
        .BackgroundQuery = False
        .Refresh
    End With

    ActiveWorkbook.Sheets("Person").Select
    ActiveSheet.Range("A1:T2000").Clear

    For Each qt In ActiveSheet.QueryTables
        qt.Delete
    Next qt
    With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("A1"), Sql:=sqlstringperson)
        .BackgroundQuery = False
        .Refresh
    End With
End Sub

Кажется, это работает нормально.... После нескольких часов серфинга и поиска в Google ^^ (Аллилуйя!!)

Спасибо, в любом случае:)

Я наконец получил немного больше информации. Мне удалось получить данные через odbc из базы данных sql вручную, и вот код, который я получил от записи:

Sub GetFromSQL()
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$E$3"), , xlYes).Name = _
        "Table1"
    Range("Table1[#All]").Select
    With ActiveSheet.QueryTables.Add(Destination:=Range("Table1[[#Headers],[ID]]" _
    ))
        .PostText = "ExternalData_1"
        .Name = True
        .FieldNames = False
        .RefreshStyle = xlOverwriteCells
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .HasAutoFormat = False
        .RefreshOnFileOpen = 1
        .BackgroundQuery = False
        .TablesOnlyFromHTML = True
        .SaveData = True
        .Refresh BackgroundQuery:=False
        .UseListObject = True
    End With
End Sub

Проблема в том, что я не могу перезапустить этот макрос, так как часть, где я подключаюсь к базе данных, а также запрос, здесь нигде не найдены.

У кого-нибудь есть подсказка, что мне нужно добавить в этот код, чтобы он работал?

Спасибо за вашу поддержку.

CU Kath

Другие вопросы по тегам