Como saber se Excel Aplicação está em modo de células-edit?
-
03-07-2019 - |
Pergunta
Eu estou escrevendo um suplemento do Excel usando interoperabilidade do .net. Eu tenho um comando que mostra uma janela, e na caixa de diálogo que fazer algum trabalho como a coleta de dados do intervalo usado de várias folhas. O problema é que se uma célula está em modo de edição, algumas das chamadas que eu preciso fazer vai lançar exceções. Eu gostaria de ter uma maneira de determinar de antemão que o Excel está em modo de edição, para que eu possa avisar o usuário para concluir a edição da célula em primeiro lugar.
Todas as idéias?
Solução
Não é uma propriedade Application.Ready que é suposto dar-lhe essa informação, mas na prática isso não funciona de forma confiável. Consulte aqui para uma hackaround.
Você também pode querer olhar para a criação Application.Interactive = false enquanto seu código .net está fazendo suas coisas.
Outras dicas
Tente esta função:
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
Você não mencionou qual a linguagem que você está usando. função do SZL é escrito em VB. Desde que eu estou usando C # eu tinha para convertê-lo. Funcionou muito bem. Aqui está o código equivalente C #.
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;
}
}
}