Macros do Excel/VBA que buscavam dados web passaram a falhar desde 01/01/2024 com o erro “the source uses a sign‑in method that may be unsecure”. Veja como diagnosticar e resolver (GPO, Registro, Power Query, alternativas seguras) sem quebrar seus fluxos de automação.
Visão geral do problema
Após mudanças de segurança aplicadas no fim de 2023 e início de 2024, muitos utilizadores do Excel no Windows passaram a ver a mensagem:
“Microsoft Office has blocked access to ‘https://…’ because the source uses a sign‑in method that may be unsecure.”
O caso típico: um arquivo Excel com VBA que usa QueryTables.Add
para consumir páginas ou endpoints atrás de login simples (user/senha), incluindo WebDAV e sites institucionais. No navegador, o login funciona; em versões antigas do Office, a macro continua a rodar. No Microsoft 365 atual, porém, o Office barra o prompt de credenciais e a atualização falha.
O que mudou (causa raiz)
A Microsoft passou a bloquear por padrão prompts de autenticação Basic dentro dos aplicativos do Microsoft 365 (Excel, Word, etc.). Isso inclui inúmeros cenários de WebDAV e de sites que ainda usam credenciais básicas. Em vez de exibir a janela pedindo usuário/senha, os apps mostram o erro acima.
Esse endurecimento de segurança chegou por canal de atualização do Microsoft 365 (por exemplo, versão 2311 no Current Channel; posteriormente em canais Semi‑Annual, como 2402). Há políticas para criar exceções por host, mas a recomendação oficial é migrar para métodos modernos de autenticação no médio prazo.
Como corrigir rapidamente (exceção por host)
A correção prática e imediata é liberar explicitamente os hosts afetados para que o Excel volte a permitir prompts Basic somente para esses destinos.
Opção A — Política de Grupo (GPO)
- Abra o Editor de Política de Grupo (gpedit.msc) ou aplique via GPMC no AD.
- Navegue até:
User Configuration → Administrative Templates → Microsoft Office 2016 → Security Settings
- Habilite a política Allow specified hosts to show Basic Authentication prompts to Office apps e informe os hostnames (um ou mais, separados por
;
), semhttps://
e sem caminhos. - Se o tráfego sair por um proxy que exige Basic, habilite também Allow Basic Authentication prompts from network proxies.
- Feche e reabra o Excel (ou reinicie o Windows) para as políticas surtirem efeito.
Opção B — Registro do Windows (por usuário)
Se não usar GPO, você pode aplicar a exceção por usuário via Registro, na chave de Policies (equivalente à política de grupo acima):
Item | Valor |
---|---|
Chave | HKEYCURRENTUSER\Software\Policies\Microsoft\Office\16.0\Common\Identity |
Nome do valor | basichostallowlist |
Tipo | REGEXPANDSZ |
Dados | Lista de hostnames sem protocolo, separados por ; (ex.: www.dmr.nd.gov;dmr.nd.gov ) |
Comando pronto (Prompt de Comando como Administrador):
REG ADD HKEYCURRENTUSER\Software\Policies\Microsoft\Office\16.0\Common\Identity ^
/t REGEXPANDSZ /v basichostallowlist /d "www.dmr.nd.gov;dmr.nd.gov" /f
Dicas cruciais para a allowlist:
- Use apenas o hostname, sem
https://
, sem barras, sem caminho. - Inclua todos os domínios usados no login e nos redirecionamentos (por exemplo,
login.seudominio.gov
além dowww.seudominio.gov
). - Separe múltiplos hosts por
;
. - Feche e reabra os apps do Office após alterar o Registro/GPO.
Diagnóstico quando a exceção não funciona
Se, após permitir o host, o Excel ainda bloquear, verifique:
- Proxy corporativo usa Basic? Ative também a política de network proxies, pois o prompt pode estar vindo do proxy, não do site final.
- Local e tipo da chave: o valor deve ficar em
…\Policies\…\Identity
e serREGEXPANDSZ
. Evite espaços extras e qualquer prefixohttps://
. - ADMX atualizado: use templates do Office recentes (que contem as políticas citadas), e confirme que o seu canal/versão já recebeu o bloqueio.
- Reinício dos apps: políticas só são aplicadas após fechar e abrir o Excel/Word (às vezes é preciso reiniciar o Windows).
- WebDAV: em cenários WebDAV, a allowlist costuma resolver. Caso o prompt não apareça na primeira abertura, feche e reabra o arquivo.
Checklist | Como validar | Próxima ação |
---|---|---|
Host adicionado corretamente | reg query mostra o valor esperado | Corrija formato (sem protocolo) e reinicie o Excel |
Proxy com Basic | Logs/proxy PAC indicam desafio 407 | Habilite política “Allow Basic Authentication prompts from network proxies” |
ADMX/versão do Office | Verifique “Conta > Sobre o Excel” | Atualize templates e valide canal 2311/2402+ |
Políticas aplicadas | gpresult /H ou rsop.msc | Forçar atualização de política e reiniciar |
Aplicando ao código VBA (exemplo real)
Considere a macro que faz a extração com QueryTables
:
With Worksheets("ScratchSheet").QueryTables.Add( _
"URL;https://www.dmr.nd.gov/oilgas/feeservices/getscoutticket.asp?filenumber=" & WellNo, _
Worksheets("ScratchSheet").Range("A1"))
.Refresh BackgroundQuery:=False
End With
Para voltar a funcionar:
- Adicione
www.dmr.nd.gov
(e quaisquer domínios de login/redirecionamento) aobasichostallowlist
. - Feche e reabra o Excel e execute
.Refresh
novamente. - Se ainda falhar, verifique se há proxy pedindo Basic e habilite a política específica para proxies.
- Considere migrar a consulta para Power Query (Dados > Obter Dados > Da Web), que respeita as mesmas políticas, ou externalizar a coleta (script que grava CSV) e então importar/atualizar no Excel.
Alternativas quando Basic não é permitido (recomendado)
Se sua organização não permitir exceções para Basic Authentication — o que é uma postura de segurança cada vez mais comum — estas são as rotas sustentáveis:
Migrar o servidor para autenticação moderna
- Trocar Basic por OAuth2/OpenID Connect ou autenticação integrada corporativa.
- Expor uma API com token (Bearer/Key) e fornecer endpoints formais para consulta.
- Em muitos casos, provedores públicos já oferecem CSV/JSON autenticado por token ou “data dumps” agendados.
Extrair fora do Office e importar
Rode a autenticação fora do Excel e entregue um arquivo pronto (CSV/JSON) para a planilha. Exemplos:
PowerShell (credencial segura e exportação CSV)
$sec = Get-Credential # janela segura para user/senha
$resp = Invoke-WebRequest -Uri "https://host.exemplo.gov/dados" -Credential $sec
converta HTML/JSON para objeto e exporte:
$obj = $resp.Content | ConvertFrom-Json
$obj | Export-Csv -NoTypeInformation -Path "C:\temp\saida.csv"
No Excel: Dados > De Texto/CSV e agende Atualizar
cURL (via agendador)
curl -u usuario:senha "https://host.exemplo.gov/dados" -o "C:\temp\saida.csv"
Reescrever em VBA sem prompt embutido
Em alguns ambientes, substituir QueryTables
por MSXML2.XMLHTTP
ou WinHTTP
funciona, pois o fluxo não tenta abrir o prompt do Office. Ainda assim, continua sendo Basic e pode ser barrado por políticas corporativas. Nunca salve senhas em texto plano.
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP.6.0")
Dim url As String, user As String, pass As String
url = "[https://host.exemplo.gov/dados](https://host.exemplo.gov/dados)"
user = Environ\$("API\_USER")
pass = Environ\$("API\_PASS")
http.Open "GET", url, False, user, pass
http.setRequestHeader "Accept", "text/csv"
http.send
If http.Status = 200 Then
' escreve resposta na planilha
Worksheets("ScratchSheet").Range("A1").Value = http.responseText
Else
MsgBox "Falha HTTP " & http.Status
End If
Cuidados: prefira variáveis de ambiente/Armazenamento de Credenciais do Windows; restrinja permissões do arquivo; evite distribuir senhas no VBA project.
O que normalmente não resolve
- Marcar o site como “Trusted Site/Location” (Internet Options/Edge/Excel). O bloqueio é pelo método de autenticação, não por “confiança do site”.
- Alterar apenas as configurações de zona do Internet Explorer/Edge legado.
- Tentar driblar via macros sem ajustar políticas (o Excel continuará barrando o prompt Basic).
Tabela de parâmetros e exemplos
Contexto | Onde configurar | Parâmetro | Exemplo |
---|---|---|---|
Exceção de hosts (Basic) | GPO ou Registro (HKCU) | basichostallowlist | www.portal.gov.br;login.portal.gov.br |
Proxy exige Basic | GPO | Allow Basic Authentication prompts from network proxies | Habilitado |
Tipo de valor | Registro | REGEXPANDSZ | — |
Recarregar políticas | Cliente | Reiniciar aplicativo/SO | gpupdate /force (se aplicável) |
Erros comuns e como corrigir
- Hostname com protocolo: Errado
https://meusite.gov
→ Certomeusite.gov
. - Separador incorreto: use
;
entre hosts (não vírgula). - Valor no local errado: a chave precisa estar sob
…\Software\Policies\…
(ramo de políticas). - Tipo de valor diferente: defina como
REGEXPANDSZ
(nãoREG_SZ
). - Proxy interceptando TLS: se a autenticação vem do proxy, habilite a política específica de proxies.
Perguntas frequentes (FAQ)
Por que o navegador funciona e o Excel não?
O bloqueio foi implementado dentro dos aplicativos do Office. Navegador e Office têm comportamentos distintos em relação a prompts de credenciais e políticas corporativas.
Se eu liberar o host, fica inseguro?
Você reduz a segurança apenas para os hosts listados, permitindo prompts Basic. É a correção tática. A estratégia recomendada é substituir Basic por autenticação moderna.
Power Query também é afetado?
Sim. Power Query respeita as mesmas políticas do Office. Com a allowlist correta, o prompt aparecerá e você poderá registrar credenciais para o conector Da Web.
Funciona em WebDAV (SharePoint/NAS/etc.)?
Relatos de comunidade indicam que a allowlist resolve a maioria dos casos WebDAV. Em algumas implementações, o primeiro carregamento pode ser instável se a política não aplicou ainda; reinicie os apps.
Posso aplicar por máquina (HKLM)?
As políticas documentadas são por usuário (HKCU no ramo Policies). Para padronizar, use GPO de Usuário ou ferramentas de gerenciamento que escrevam no perfil do usuário.
Boas práticas de segurança ao manipular credenciais
- Evite armazenar senhas em texto claro no VBA; utilize o Gerenciador de Credenciais do Windows, variáveis de ambiente ou cofres (ex.: Azure Key Vault).
- Restrinja o acesso aos arquivos com macros e aos diretórios de dados temporários.
- Implemente rotação de senhas/tokens e registre acessos (auditoria).
- Planeje a migração para OAuth2/OIDC ou API com token o quanto antes.
Passo a passo: habilitar, testar, validar
- Liste todos os hosts envolvidos no login (incluindo redirecionadores).
- Configure a allowlist via GPO ou Registro.
- Se houver proxy com Basic, habilite a política específica de proxy.
- Reinicie o Excel/Windows.
- Execute a macro/consulta; o prompt deve surgir (ou a atualização avançar com credencial salva).
- Registre evidências para auditoria (screenshot de políticas,
reg query
).
Apêndice A — Scripts prontos
Adicionar hosts (CMD):
REG ADD HKEYCURRENTUSER\Software\Policies\Microsoft\Office\16.0\Common\Identity ^
/t REGEXPANDSZ /v basichostallowlist /d "www.exemplo.gov;login.exemplo.gov" /f
Consultar valor (CMD):
REG QUERY HKEYCURRENTUSER\Software\Policies\Microsoft\Office\16.0\Common\Identity /v basichostallowlist
Remover valor (CMD):
REG DELETE HKEYCURRENTUSER\Software\Policies\Microsoft\Office\16.0\Common\Identity /v basichostallowlist /f
PowerShell (criar/atualizar valor):
$key = "HKCU:\Software\Policies\Microsoft\Office\16.0\Common\Identity"
New-Item -Path $key -Force | Out-Null
New-ItemProperty -Path $key -Name "basichostallowlist" -Value "www.exemplo.gov;login.exemplo.gov" -PropertyType ExpandString -Force | Out-Null
PowerShell (adicionar host sem perder os existentes):
$key = "HKCU:\Software\Policies\Microsoft\Office\16.0\Common\Identity"
$prop = Get-ItemProperty -Path $key -Name basichostallowlist -ErrorAction SilentlyContinue
$add = "api.exemplo.gov"
if ($prop) {
$hosts = ($prop.basichostallowlist -split ";") + $add
$hosts = ($hosts | Where-Object { $ -and $.Trim() -ne "" }) | Select-Object -Unique
$value = ($hosts -join ";")
} else {
$value = $add
}
New-ItemProperty -Path $key -Name "basichostallowlist" -Value $value -PropertyType ExpandString -Force | Out-Null
Apêndice B — Ajustes específicos para proxies
Se o desafio de autenticação vier do proxy (código 407), habilite a política “Allow Basic Authentication prompts from network proxies”. Em ambientes com inspeção TLS, confirme se o certificado do proxy está confiado pelo Windows (repositório de Autoridades Raiz) para evitar erros colaterais de SSL/TLS.
Apêndice C — Power Query (Da Web)
- No Excel, vá em Dados > Obter Dados > Da Web.
- Insira a URL. Se a allowlist estiver configurada, você poderá escolher Basic e informar user/senha.
- Na primeira importação, salve a credencial no escopo certo (arquivo/organização) e configure o agendamento de atualização (se usar Power Query no Power BI/Serviços).
Resumo estratégico
- O erro não é bug do seu VBA; é uma política de segurança do Office contra Basic Authentication.
- Correção rápida: allowlist por host via GPO/Registro e, se necessário, habilitar prompts de proxy Basic.
- Correção sustentável: abandonar Basic (modern auth, API com token, extração externa).
- Documente e monitore: mantenha ADMX e canal do Office atualizados, e registre as exceções concedidas.
Glossário
- Basic Authentication: método de autenticação HTTP que envia credenciais codificadas em Base64; simples, porém fraco.
- WebDAV: extensão do HTTP para edição/gerenciamento de arquivos na web; muitos servidores ainda usam Basic.
- Allowlist: lista explícita de destinos confiáveis para os quais um comportamento bloqueado é permitido.
- GPO (Group Policy): mecanismo de governança do Windows/AD para aplicar configurações em massa.
- Power Query: tecnologia de conexão e transformação de dados do Excel.
Referências essenciais para aprofundar
(Sem links) Documentação oficial “Basic authentication sign‑in prompts are blocked by default in Microsoft 365 Apps”; materiais de WebDAV de universidades/fornecedores; discussões em fóruns de comunidades sobre Office+WebDAV e políticas de allowlist.
Conclusão: para restaurar suas automações de Excel/VBA, habilite a exceção por host (e por proxy, se aplicável) e revise seu fluxo para sair de Basic Authentication no médio prazo. Isso elimina o bloqueio imediato e prepara sua operação para futuras restrições de segurança.