我想拥有将运行.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
答案 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")