vba mac连接到SQL Server与ActualTech odbc驱动程序

我一直在处理我的问题,现在我似乎没有find一个准确的工作答案,所以在这里,我是…我是一个新的VBA我不得不承认…… 。

我的问题是以下几点:

我正在与MS Office 2011的Mac OS X优胜美地工作,我试图将我的Excel工作簿连接到一个SQL数据库。 这必须通过vba来完成,以后我想从sql数据库读取数据以及将数据写入数据库。 我无法findbuild立到该数据库的连接的方法。 我甚至下载了actualtech的odbc驱动程序,并设置我的dsn(不知道如果我做对了,但无法find如何与一个SQL服务器上的主页….)

下面的代码是我能find的,但是我仍然在这里得到错误:

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 & ";" 

但它仍然没有工作…

如果有人能帮助我,我将不胜感激。 如果你需要更多的信息,请只说:)

我终于搞定了……… 🙂

我将VBA代码中的代码改为在Mac Excel 2011中从Mysql DB获取数据,并将其调整为以下内容:

 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 

这似乎工作得很好….经过数小时的冲浪和谷歌search^^(halleluja !!)

不pipe怎么说,还是要谢谢你 :)

我终于得到了更多的信息。 我设法通过手动从sql-database odbc获取数据,这是我从logging它的代码:

 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 

问题是,我无法重新运行这个macros,因为连接到数据库的部分以及查询都无处可寻。

有没有人有线索,我需要添加到这个代码,所以它会工作?

谢谢你的支持。

CU Kath