打开工作表时使用excel自动查询sql server

时间:2017-06-10 17:39:04

标签: sql-server excel vba excel-vba

我需要一个excel表和一个批处理文件,以便:当批处理文件运行时,excel表打开,在SQL数据库上运行查询,并将内容保存到不同名称的excel文件。

我知道这是在问很多,所以我为长期请求道歉。我确切地知道我需要执行的查询,并且我知道批处理文件应该如何工作。

我遇到的问题是打开文件并执行查询时运行的excel中的VBA代码。因此,虽然我知道如何在SAS和Micorsoft SQL中运行sql查询,但我很难弄清楚如何使excel在VBA代码中自动执行这些查询。这就是我所拥有的,但它*当我运行代码时,我收到错误“编译错误:用户定义的类型未定义”

enter image description here

2 个答案:

答案 0 :(得分:0)

提供帮助的步骤

  • 创建WorkBook Open事件并将代码放在那里。
  • 了解如何使用VBA打开其他作品。这里的SO文档部分有例子
  • 学习使用Offset属性和xlUp命令编写结果(以防万一你需要将结果写入日志,这通常是下一行/列

答案 1 :(得分:0)

我像这样使用

Sub getDAtaFromServer()
    Dim con As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rst As New ADODB.Recordset
    Dim strOldUDT As String
    Dim strNewUDT As String
    Dim aryTempUDT() As String
    Dim strTempID As String
    Dim i As Integer

    con.ConnectionString = "Provider=SQLOLEDB.1;" _
             & "Server=(local);" _
             & "Database=TEST;" _
             & "Integrated Security=SSPI;" _
             & "DataTypeCompatibility=80;"

    con.Open

    Set cmd.ActiveConnection = con
    cmd.CommandText = "SELECT * FROM [table] "
    Set rst = cmd.Execute
    Range("A1").CopyFromRecordset rst

    con.Close
    Set con = Nothing

End Sub