Hola soy bastante nuevo para VBA y esperaba que alguien me pudiera ayudar con el último código.macro de VBA en Excel para ejecutar la declaración Insertar SQL
Estoy tratando de tomar celdas de una hoja de cálculo y agregarlas a una tabla SQL, pero estoy teniendo trubble ejecutando la instrucción SQL. Aquí está el código que tengo hasta ahora.
Private Sub ConnectDB()
Dim oConn As Object
Set oConn = CreateObject("ADODB.Connection")
oConn.Open = "DRIVER={SQL Server};" & _
"SERVER=SERVER02;" & _
"DATABASE=platform;" & _
"USER=5y5t3mus3r;" & _
"PASSWORD=*******;" & _
"Option=3;"
If oConn.State = adStateOpen Then
MsgBox "Welcome to Database!"
Else
MsgBox "Sorry No Database Access."
End If
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim Company As String
Dim Address As String
Dim Address1 As String
Dim Address2 As String
Dim County As String
Dim Contact As String
Dim Phone As String
Dim Fax As String
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
Sheets("wsheet").Activate
Set rs = New ADODB.Recordset
rs.Source = Sql
With wsheet
MyFile = "C:\Users\Ryan.ICS\Documents\Documents\InsertStatement.txt"
fnum = FreeFile()
Open MyFile For Output As fnum
myRow = 2
myCol = 4
For myRow = 2 To InputBox(Prompt:="What is the last row of data?", Title:="Data Row", Default:=1)
myCol = 4
Company = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Address = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Address1 = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Address2 = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Address3 = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 2
Phone = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
Fax = ActiveSheet.Cells(myRow, myCol)
myCol = myCol + 1
strSQL = "INSERT INTO [sandbox].[5y5t3mus3r].[ryan] (Organisation, Address1, Address2, TownCity, County, Telephone, Fax) VALUES('" & Company & "', '" & Address & "', '" & Address1 & "', '" & Address2 & "', '" & Address3 & "', " & Phone & ", " & Fax & ");"
Print #fnum, strSQL
DoCmd.RunSQL strSQL ***Here is where I am haveing an error it will not run the SQL command.****
oConn.Execute strSQL **** here is another tag I tried in a number of different ways but i still couldnt get the SQL statement to run
Next
End With
' Find out how many rows were affected by the Insert.
Set rs = oConn.Execute("Select @@rowcount")
' Display the first field in the recordset.
MsgBox rs(0) & " rows inserted"
oConn.Close
Set rs = Nothing
Set oConn = Nothing
Close #fnum
End Sub
Function esc(txt As String)
esc = Trim(Replace(txt, "'", "\'"))
End Function
El error surge cuando estoy tratando de ejecutar la instrucción SQL necesito para crear un objeto o método para esto o algo así.
Cualquier ayuda con esto sería realmente apreciada gracias!
¿Qué error estás recibiendo? 'DoCmd'? Este es un objeto de acceso, no un objeto de Excel. –
¿Qué error estás recibiendo? DoCmd? Este es un objeto de acceso, no un objeto de Excel. - Olivier Jacot-Descombes Hace 1 minuto Hey Olivier no Obtuve un error '424' en tiempo de ejecución: Objeto requerido Gracias por su respuesta rápida – user1167046
Haga un 'debug.print strSQL' (después de haberlo construido, pero antes de ejecutarlo) Luego copie la cadena que saldrá a la ventana inmediata. A continuación, pegue la consulta en su herramienta SQL favorita y ejecútela. Creo que la mejor idea es obtener un INSERT INTO en funcionamiento primero, y luego modificar tu VBA para que coincida. Espero que esto ayude. – jon