ATUALIZAR:
Depois de todos os detalhes resumidos e discutidos, passei 2 horas justas verificando as opções, e essa atualização é para pontuar todos os i
s.
Preparativos
Em primeiro lugar, executei uma instalação limpa do Office 2010 x86 na máquina virtual Clean Win7 SP1 Ultimate x64 com VMWare (essa é uma rotina normal para minhas tarefas diárias de teste, portanto, tenho muitos deles implantados).
Em seguida, alterei apenas as seguintes opções do Excel (ou seja, todas as outras são deixadas como estão após a instalação):
Advanced > General > Ask to update automatic links
verificado :
Trust Center > Trust Center Settings... > External Content > Enable All...
(embora aquele relacionado às conexões de dados provavelmente não seja importante para o caso):
Condições prévias
Eu preparei e coloquei em C:\
uma pasta de trabalho exatamente de acordo com as @Siddharth Rout
sugestões de sua resposta atualizada (compartilhada para sua conveniência): https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx O livro vinculado foi então excluído para que o link no link compartilhado livro não está disponível (com certeza).
Abertura Manual
O arquivo compartilhado acima mostra ao abrir (tendo as opções do Excel listadas acima) 2 avisos - na ordem em que aparecem:
AVISO # 1
Depois de clicar em Update
, esperava receber outro:
AVISO # 2
Então, suponho que meu ambiente de teste agora é muito semelhante ao OP
de) Até agora tudo bem, finalmente vamos para
Abertura VBA
Agora vou tentar todas as opções possíveis, passo a passo, para deixar a imagem clara. Vou compartilhar apenas linhas de código relevantes para simplificar (o arquivo de amostra completo com o código será compartilhado no final).
1. Aplicativo simples.Livros de trabalho.Abrir
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Nenhuma surpresa - isso produz AMBOS avisos, como para a abertura manual acima.
2. Application.DisplayAlerts = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Este código termina com o AVISO # 1 , e qualquer opção clicada ( Update
/ Don't Update
) NÃO produz nenhum aviso adicional, ou seja, Application.DisplayAlerts = False
suprime o AVISO # 2 .
3. Application.AskToUpdateLinks = False
Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True
Ao contrário DisplayAlerts
, este código termina apenas com o AVISO # 2 , ou seja, Application.AskToUpdateLinks = False
suprime o AVISO # 1 .
4. Duplo Falso
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
Aparentemente, esse código acaba suprimindo AMBOS OS AVISOS .
5. UpdateLinks: = False
Application.Workbooks.Open Filename:="C:\Book1withLinkToBook2.xlsx", UpdateLinks:=False
Finalmente, esta solução de 1 linha (originalmente proposta por @brettdj
) funciona da mesma maneira que Double False: NENHUM AVISO é mostrado!
Conclusões
Exceto uma boa prática de teste e um caso resolvido muito importante (posso enfrentar esses problemas todos os dias ao enviar minhas pastas de trabalho para terceiros, e agora estou preparado), mais 2 coisas aprendidas:
- As opções do Excel são IMPORTANTES, independentemente da versão - especialmente quando se trata de soluções VBA.
- Todo problema tem solução curta e elegante - junto com uma solução não óbvia e complicada. Só mais uma prova disso!)
Muito obrigado a todos que contribuíram para a solução e, especialmente, ao OP que levantou a questão. Espero que minhas investigações e etapas de teste completamente descritas tenham sido úteis não só para mim)
O arquivo de amostra com as amostras de código acima é compartilhado (muitas linhas são comentadas deliberadamente): https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm
Resposta original (testada para Excel 2007 com certas opções):
Este código funciona bem para mim - ele percorre TODOS os arquivos do Excel especificados usando curingas em InputFolder
:
Sub WorkbookOpening2007()
Dim InputFolder As String
Dim LoopFileNameExt As String
InputFolder = "D:\DOCUMENTS\" 'Trailing "\" is required!
LoopFileNameExt = Dir(InputFolder & "*.xls?")
Do While LoopFileNameExt <> ""
Application.DisplayAlerts = False
Application.Workbooks.Open (InputFolder & LoopFileNameExt)
Application.DisplayAlerts = True
LoopFileNameExt = Dir
Loop
End Sub
Tentei com livros com links externos indisponíveis - sem avisos.
Arquivo de amostra: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm