Ecco un frammento di codice VBA che ho usato per chiamare una stored procedure DB2. La stessa tecnica dovrebbe funzionare per qualsiasi istruzione DDL. Per fare ciò, crea una query pass-through e inserisci il tuo CREATE TABLE #tblname...
istruzione come testo SQL.
IMPORTANTE:quindi apri la finestra delle proprietà della query e imposta la proprietà "Restituisce record" su "No".
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("qry_SP_CHANGE_COLUMN")
qdf.Connect = CurrentDb.TableDefs("SCHEMA_tblName").Connect
qdf.SQL = "call SCHEMA.SP_CHANGE_COLUMN(...)"
qdf.Execute dbFailOnError
qdf.Close
Set qdf = Nothing
Nota, probabilmente non dovrai cambiare il tuo testo SQL. Puoi semplicemente lasciarlo nella query def se la struttura della tabella non cambia mai.
La sfida per te è che devi utilizzare la stessa connessione per qualsiasi operazione sulla tabella temporanea. Nel momento in cui la connessione viene chiusa, la tua tabella temporanea svanirà perché è una tabella temporanea locale ed è visibile solo a quella connessione. Puoi evitarlo usando '##', tabelle temporanee globali, se hai i diritti per farlo.