Transacciones VBA

Estoy tratando de insert algunos datos en SQL de Excel VBA. Los commands SQL se crean en el transcurso del script VBA e incluyen el uso de algunas variables SQL.

Intento entender cómo funcionan las transactions en VBA, y si funcionarán con lo que necesito hacer, tengo el siguiente código que probará esto, pero no funciona. Siempre me da un error sobre "Debe definir la variable escalar @name" así que supongo que hay un problema aquí con el scope de los datos / transacción. ¿Cómo puedo hacer que funcione este simple código?

Const stADO As String = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _ "Persist Security Info=False;" & _ "Initial Catalog=ImportTest;" & _ "Data Source=localhost\sqlexpress" Set cn = New ADODB.Connection With cn .CursorLocation = adUseClient .Open stADO .CommandTimeout = 0 End With cn.BeginTrans cn.Execute "set implicit_transactions off" cn.Execute ("declare @name varchar(100)") cn.Execute ("set @name='name'") cn.Execute ("Insert into test (id,name) values (55,@name)") cn.CommitTrans cn.Close Set cn = Nothing 

necesita ejecutar todos estos en 1 lote

 cn.Execute "set implicit_transactions off" cn.Execute ("declare @name varchar(100)") cn.Execute ("set @name='name'") cn.Execute ("Insert into test (id,name) values (55,@name)") 

construyó una cadena y luego usa 1 cn.Execute

Mejor aún, use consultas parametrizadas para protegerse contra la SQL injection