2014-11-20 2 views
1

В настоящее время я пытаюсь выяснить, как запустить файл .sql из VBA. Я могу заставить VBA запустить sql-код внутри него, но поскольку у меня уже написан скрипт SQL, я бы хотел просто вызвать этот файл, запустить код и передать данные обратно в Excel. Даже если он вызывает файл и передает код обратно в VBA для запуска, все будет хорошо, но вместо этого проще сохранить код там, а не в редакторе VBA.Запуск SQL-файла из VBA

База данных Oracle, но у меня есть соединение и работающие atm.

' Makes the SQL call to collect the data. 
Dim strConOracle As String 
Dim oConOracle, oRsOracle 
Dim strSQL As String 
Dim lngCount As Long 
Dim strCount As String 



strConOracle = "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" 
strConOracle = strConOracle & "(HOST=" & HOST & ")(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=" & DBNAME 
strConOracle = strConOracle & "))); uid=" & ORACLE_USER_NAME & " ;pwd=" & ORACLE_PASSWORD & ";" 
Set oConOracle = CreateObject("ADODB.Connection") 
Set oRsOracle = CreateObject("ADODB.RecordSet") 
oConOracle.Open strConOracle 

strSQL = "" 

Set oRsOracle = oConOracle.Execute(strSQL) 

ActiveSheet.Cells.CopyFromRecordset oRsOracle 

oConOracle.Close 
Set oRsOracle = Nothing 
Set oConOracle = Nothing 

Это код, который у меня есть, минус соединение с базой данных, которое объявлено в верхней части.

В идеале я бы просто изменил часть strSQL.

Спасибо за любую помощь

ответ

2

что-то вроде этого будет делать работу за вас:

Dim strSQL As String 
strSQL = "" 

Dim hnd As Integer 
hnd = FreeFile 

Open "C:\Temp\yourScript.sql" For Input As hnd 

Dim row As String 
Do Until EOF(hnd) 
    Line Input #hnd, row 
    strSQL = strSQL & row & vbNewLine 
Loop 

Close #hnd 
+0

Можно ли добавить две переменные в VBA для дат, которые будут переданы в SQL и используются. В идеале пользователь просто вводит две даты в две ячейки, запускает макрос, и как только код будет выполнен, он будет заполняться в excel. Или это будет слишком много вне того, что могут делать VBA и Excel? Если кто-нибудь может порекомендовать какие-либо хорошие книги или руководства по обучению VBA, я был бы признателен. Только начинать делать что-либо подобное – user1087906

+0

, это не должно быть проблемой. Вы можете поместить что-то вроде ## date ## в ваш файл SQL. После импорта этого файла вы можете использовать функцию replace() для замены его значениями ячейки. – cboden

Смежные вопросы