/ / Excel limpa a área de transferência na proteção / desproteção da folha pelo VBA, mas a retém quando feita usando a interface do usuário, ou seja, Revisão -> Proteger / Desproteger? - excel, vba, excel-vba

O Excel limpa a área de transferência na folha de proteção / desprotegida pelo VBA, mas a retém quando feita usando a UI, por exemplo, Review -> Protect / Unprotect? - excel, vba, excel-vba

Me deparei com um problema estranho na MicrosoftExcel para Mac 16.11. É igualmente verdade para a versão do Windows também. Se eu copiar algumas células e usar o VBA para proteger ou desproteger a folha, a área de transferência será limpa. Aqui está o código que eu uso para proteger - desproteger:

Sheet1.Unprotect ("abc")
Sheet1.Protect ("abc")

Mas se eu copiar algumas células e usar a interface do usuário i.e Revise -> Proteger, Desproteger, a área de transferência é mantida e posso até ver que a borda pontilhada de cor verde nas células copiadas está intacta, ao contrário do caso anterior.

Eu posso usar o MSForms.DataObject para salvar manualmente o texto da área de transferência (funciona) antes de chamar de proteger / desproteger e restaurá-lo após a chamada, mas a borda verde pontilhada desaparece, o que pode causar confusão ao usuário.

Existe uma maneira de imitar no VBA o que a interface do usuário faz ao proteger / desproteger?

Respostas:

0 para resposta № 1

Me deparei com algo enquanto pesquisava outra coisa, acho que pode ser uma resposta para isso, veja http://www.excel-first.com/autoexpand-excel-tables-on-protected-sheets/

Em resumo, parece que é um problema comum ao executar macros / código e que você pode impedir que o Excel limpe a área de transferência abrindo-a primeiro (você precisará fechá-la depois) usando:

OpenClipboard 0

~the action that would make Excel clear the clipboard~

CloseClipboard