Si el comentario esta en varias lineas como en el ejemplo, esta funcion deberia servir, aunque algo excesiva en detalles, se puede reducir quitando opciones
.
Para quien quiera aprender os pongo unos comentarios con lo que va haciendo.     
Código vb:
Ver original- Function ExtraeComentarioL(ByVal sTexto As String, Optional ByVal sIniCom As String = "<!-- COMENTARIO -->", Optional ByVal sFinCom As String = "<!-- FIN COMENTARIO -->", Optional ByVal SensibleMayMin As Boolean = True) As String 
-   Dim F As Long ' variable para los bucles for next 
-   Dim MatrizU() As String ' creamos una matriz de tamaño variable 
-   Dim MatrizR() As String ' creamos OTRA matriz de tamaño variable 
-    
-   MatrizR = Split(sTexto, vbCrLf) ' cargamos la matriz REAL con las lineas del texto NORMAL. cada linea se convierte en un elemento de la matriz. 
-    
-   If SensibleMayMin = False Then ' si no hay que distinguir entre mayusculas/minusculas... 
-     sIniCom = UCase$(sIniCom) ' lo pasamos todo a... 
-     sFinCom = UCase$(sFinCom) ' mayusculas para hacer las... 
-     sTexto = UCase$(sTexto) ' comparaciones insensibles a may/min. 
-     MatrizU = Split(sTexto, vbCrLf) ' cargamos la matriz UCASE con las lineas del texto EN MAYUSCULAS. cada linea se convierte en un elemento de la matriz. 
-    
-   Else ' si hay que ser sensible a may/min... 
-     MatrizU = Split(sTexto, vbCrLf) ' cargamos la matriz UCASE con las lineas del texto NORMAL. cada linea se convierte en un elemento de la matriz. 
-   End If 
-    
-   If InStr(1, sTexto, sIniCom) Or sIniCom = "" Then ' si existe el texto inicial dentro del texto completo o no hay texto inicial que buscar... 
-      
-     If sIniCom <> "" Then ' si el texto inicial no es una cadena en blanco... 
-       For F = 0 To UBound(MatrizU) ' buscamos la linea con ese texto entre los elementos de la matriz. 
-         If MatrizU(F) = sIniCom Then Exit For ' si encontramos la linea con el texto inicial salimos del bucle for next 
-       Next F ' vamos comprobando todos los elementos 
-      
-     Else ' si el texto inicial es una cadena en blanco... 
-       F = -1 ' vamos a capturar todas las líneas desde el comienzo hasta el texto final si existe, y si no existe, hasta el fin del texto completo 
-     End If 
-      
-     If F < UBound(MatrizU) Then ' si hemos buscado el texto inicial y lo hemos encontrado en la matriz, F tendra un valor inferior al ubound de la matriz. 
-       For F = F + 1 To UBound(MatrizU) ' de modo que capturamos elementos desde F+1 en adelante. recordaremos que F es el indice del elemento de la matriz que contiene el texto inicial, asi que capturamos desde el siguiente elemento en adelante. 
-          
-         If MatrizU(F) = sFinCom Then Exit For ' si llegamos al "fin de comentario" dejamos de capturar elementos y se acaba la funcion devolviendo el texto capturado. 
-          
-         If ExtraeComentarioL <> "" Then ExtraeComentarioL = ExtraeComentarioL & vbCrLf ' si no es la primera captura le añadimos un salto de linea para separar los elementos capturados 
-          
-         ExtraeComentarioL = ExtraeComentarioL & MatrizR(F) ' y añadimos el elemento (F) actual DE LA MATRIZ REAL a la cadena que devolveremos al salir de la funcion. Asi el texto devuelto es el original, y no el que se ha podido pasar antes a mayusculas. 
-        
-       Next F ' y asi hasta encontrar el fin de comentario o llegar al final del texto si sFinCom = "" o no se encuentra el texto final indicado. 
-      
-     End If 
-    
-   End If 
-   
- End Function