Pergunta

Estou automatizar Visio 2003 a partir de um aplicativo VB.NET. Meus olhares código como este (com as coisas desinteressantes removidos):

Dim objApp As New Microsoft.Office.Interop.Visio.InvisibleApp
objApp.Settings.ShowFileOpenWarnings = False
Dim objDoc As Microsoft.Office.Interop.Visio.Document
objDoc = objApp.Documents.Open(VisioFilename)

Eu descobri que a última linha faz com que o Visio para criar uma MessageBox escondida dizendo:

macros neste documento estão desativadas porque o nível de segurança é alto e as macros não foram assinadas digitalmente ou verificadas como seguro. Para executar as macros, você pode tê-los assinado ou alterar o nível de segurança.

Uma vez que este está indo para ser executado em computadores que não controlam com arquivos eu não controlar nenhuma dessas opções funciona para mim. Eu realmente não me importo que as macros são desativadas, eu só estou usando Visio para converter o arquivo de formato nativo que seja para SVG. Eu certamente não quero sugerir aos usuários que baixam o nível de segurança, nem que eu iria querer baixá-lo para eles.

Como você pode ver no meu código acima, eu desligar arquivo advertências abertas, mas isso não parece incluir o aviso de macro. Desde que eu estou usando Visio.InvisibleApp verifica-se o aviso não for exibido para o usuário. Executando um exemplo visível do Visio não vai ajudar porque eu estou criando um conversor de lote, mesmo que a mensagem era visível, significa que o usuário teria que clicar em OK para cada arquivo. Isso faria com que o recurso de conversão de lote essencialmente inútil.

Eu vejo que a classe Visio tem uma propriedade VBAEnabled mas é só ler. Se houvesse uma maneira que eu poderia simplesmente desligar VBA ao abrir o arquivo que provavelmente resolver o problema. Eu olhei através de todas as propriedades e através do estabelecimento de definições sobre a classe e não consigo encontrar nada. Eu fiz um monte de Google busca e não consigo encontrar nada que aborda esta questão.

Alguém sabe se esse aviso pode ser suprimida pelo uso da automação com Visio? Eu posso fazer isso se eu mudar para o Visio 2007?

Foi útil?

Solução

Existe um método OpenEx que funciona como aberto, mas ele aceita bandeiras. Um desses sinalizadores é visOpenMacrosDisabled (& H80).

Existem também algumas outras bandeiras acessível lá como visOpenDontList (& H8) para que os arquivos abertos por meio de automação não será adicionado à lista de arquivos recentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top