如何使用VBA从Excel执行SQL脚本

时间:2019-07-31 13:38:39

标签: excel vba

我想拥有将运行.sql脚本(保存在文件夹中)的宏,而不必将SQL代码放入Excel VBA脚本中。

我有50多个脚本要自动化-这些脚本中有许多查询,每个查询都用a分隔;

我尝试过

db.ExecuteImmediate ("\\c\sql_folder\1.0_Create_My Lovely_Table.sql") 

但错误显示“需要对象”

下面的代码可以工作,但我想帮助您完成上面的代码。谢谢。

Sub CREATE_My_lovely_table()
Dim con As ADODB.Connection
Dim recset As ADODB.Recordset
Dim ConnectionString As String
Dim SQL_String As String

Set con = New ADODB.Connection
Set recset = New ADODB.Recordset

ConnectionString = "xxxxxx.1;User ID=XXXX_XXXX_XXXX;password=xxxxxxxx;Data Source=xxxxxxxx"

con.Open ConnectionString

SQL_String = "CREATE TABLE My_lovely_table (CASEID NUMBER,ACCOUNTNUMBER NUMBER,RESOLVEDDATE TIMESTAMP,RESOLUTION VARCHAR (50),RESOLVEDBY VARCHAR (100),ORDERID NUMBER)"
recset.Open SQL_String, con
    con.Close
End Sub

2 个答案:

答案 0 :(得分:2)

您可以尝试从VBA执行SQL存储过程。我可以想象它与执行SQL查询并没有太大区别。

Set mobjConn = New ADODB.Connection
mobjConn.Open "your connection string"
Set mobjCmd = New ADODB.Command
With mobjCmd
    .ActiveConnection = Me.Connection
    .CommandText = "your stored procedure"
    .CommandType = adCmdStoredProc
    .CommandTimeout = 0
    .Parameters.Append .CreateParameter("your parameter name", adInteger, adParamInput, , your parameter value)
    ' repeat as many times as you have parameters

    .Execute
End With

从愚蠢的Calling stored procedure VBA中找到

另一个选项可能是将字符串(SQL查询)存储在文本文件中,然后将它们加载到VBA数组中并执行它们。

答案 1 :(得分:0)

您可以下载SQL Server的“ sqlcmd”实用程序 (有关https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-2017的更多信息)

有了它,您可以从命令行运行* .sql脚本...

然后,在您的VBA代码中,您可以使用Shell过程

current_query = Shell("sqlcmd -S <server Name> -U sa -P sapassword -i inputquery_file_name -o outputfile_name")