¿Cómo saber si la aplicación de Excel está en modo de edición de celda?
-
03-07-2019 - |
Pregunta
Estoy escribiendo un complemento de Excel usando COM Interop desde .net. Tengo un comando que muestra un cuadro de diálogo y, desde el cuadro de diálogo, trabajo un poco, como recopilar datos del rango utilizado de varias hojas. El problema es que si una celda está en modo de edición, algunas de las llamadas que debo hacer arrojarán excepciones. Me gustaría una forma de determinar de antemano que Excel está en modo de edición, para que pueda advertir al usuario que termine de editar la celda primero.
¿Alguna idea?
Solución
Existe una propiedad Application.Ready que debe proporcionarle esta información, pero en la práctica no funciona de manera confiable. Consulte aquí para encontrar un hackaround.
Es posible que también quieras ver la configuración de Application.Interactive = false mientras tu código .net está haciendo su trabajo.
Otros consejos
Pruebe esta función:
Function IsInEditMode(ByRef exapp As Excel.Application) As Boolean
If exapp.Interactive = False Then
Return False
Else
Try
exapp.Interactive = False
exapp.Interactive = True
Return False
Catch
Return True
End Try
End If
End Function
No mencionaste qué idioma estás usando. La función de SZL está escrita en VB. Ya que estoy usando C # tuve que convertirlo. Funcionó muy bien Aquí está el código C # equivalente.
bool IsInEditMode(ref Microsoft.Office.Interop.Excel.Application exapp)
{
if (exapp.Interactive == false)
{
return false;
}
else
{
try
{
exapp.Interactive = false;
exapp.Interactive = true;
return false;
}
catch
{
return true;
}
}
}