Allora faccio un riepilogo :

File Connect.dsr
codice:
Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)

 Set mVarExcelApplication = Application
File mMain.bas (manca una parte dedicata alla connection aperta in un altro modulo che non metto perchè non ci interessa per la soluzione)
codice:
Option Explicit

Public mVarExcelApplication As Excel.Application

Public Sub Elabora()
Dim sSql As String
Dim ObjRs As ADODB.Recordset

Dim sh As Worksheet
Dim trg As Range
Dim CountBlank As Double
Dim sWhat$, sReplace$

oSql = "select * from tmpCampiReplace"
    
Set ObjRs = New ADODB.Recordset
ObjRs.Open oSql, CONN_SQL

If ObjRs.bof then
    'do nothing
else
Do Until ObjRs.EOF                
                sWhat = ObjRs("field_text")
                sReplace = ObjRs("field_replace")
                
                If Len(Trim(sReplace)) < 1 Then
                    sReplace = "'"
                End If
                    
               On Local Error Resume Next
               For Each sh In mVarExcelApplication.ActiveWorkbook.Worksheets
                    If sh.Name <> "Protetto" Then
                        On Local Error Resume Next
                        Set trg = sh.Range("A1:IV65536")
                        CountBlank = mVarExcelApplication.WorksheetFunction.CountBlank(trg)
                        If CountBlank < 16777216 Then
                            trg.Replace What:=sWhat, Replacement:=sReplace, LookAt:=2, SearchOrder:=1, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
                        End If
                        Set trg = Nothing
                    End If
                Next
               
                
                ObjRs.MoveNext
            Loop
end if

ObjRs.Close
Set ObjRs = Nothing
End Sub