Go to the Settings menu, Variable Overview, find vSQL and set any random value just to make sure that the macro works fine. As far as I see, the code seems to be all right and varSQL is an object provided vSQL exists in the document and has any value. Check that you are not declaring varSQL in one sub and calling from another as a "private" variable.
I'd use the same macro for both things. You can use the CALL to call another sub or function within a different sub, so although you have two different subs (one that sets the variable the other that runs the trigger) the main is called only once, and this calls to the one that sets the variable.
SET vSQL = ActiveDocument.Variables("vSQL")
vSQL.SetContent "Something", true
'' You need to create the object in this function (it's private)