Boa noite.
Substituir o caminho do arquivo onde está falando para substituir, mas deu erro. Como solucionar esse problema ?
Boa noite.
Substituir o caminho do arquivo onde está falando para substituir, mas deu erro. Como solucionar esse problema ?
Ei, Jadson! Tudo bem?
O erro "O nome do diretório não é válido" indica que o caminho especificado está incorreto ou que o arquivo não existe no local indicado.
Sendo assim, recomendo verificar alguns pontos:
Cheque se o caminho do arquivo está correto. Você pode fazer isso copiando o caminho diretamente do explorador de arquivos do Windows.
Revise se o caminho do arquivo está entre aspas duplas no código, principalmente se houver espaços.
Verifique se você tem permissão para acessar o diretório e o arquivo em questão.
Confirme que o arquivo realmente existe no local especificado.
Se após essas verificações o problema persistir, pode ser útil compartilhar o trecho do código onde o caminho está sendo definido para que possamos analisar mais detalhadamente.
Espero ter ajudado e qualquer dúvida, compartilhe no fórum.
Até mais, Jadson!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado!
Boa noite.
Quando copiei o endereço, cliquei uma vez aqui
Aí o caminho ficou assim
Não consegui encontrar o erro do código.
Segue o código abaixo.
Obrigado.
Option Explicit
Sub GeraMalaDireta()
' Cria um objeto Word.Application
Dim WordApp As Object
Dim WordDoc As Object
Dim sCaminhoPasta As String
Dim lContaLinhas As Long
' Define o caminho do arquivo do Word
sCaminhoPasta = "C:\Users\Jadson\Documents\VBA - INTEGRANDO OUTLOOK COM IAS" 'Substitua pelo caminho do seu arquivo
'Inicia a aplicação Word
Set WordApp = CreateObject("Word.Application")
'Inicia Contador de linhas
lContaLinhas = 2
Do While Cells(lContaLinhas, 1).Value <> vbNullString
' Abre o documento do Word
Set WordDoc = WordApp.Documents.Open(sCaminhoPasta)
' Torna o aplicativo Word visível
WordApp.Visible = True
' Realiza a operação de busca e substituição
Call fnSubstituiVariavelnoDocumento(WordDoc, "##NOME", Cells(lContaLinhas, 2).Value)
With WordDoc.Content.Find
.Text = "##TELEFONE"
.Replacement.Text = Cells(lContaLinhas, 3).Value
.Forward = True
.Wrap = 1 ' wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=2 ' wdReplaceAll
End With
With WordDoc.Content.Find
.Text = "##GERENTE"
.Replacement.Text = Cells(lContaLinhas, 4).Value
.Forward = True
.Wrap = 1 ' wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=2 ' wdReplaceAll
End With
' Salva e fecha o documento do Word
WordDoc.SaveAs WordDoc.Path & "\" & Cells(lContaLinhas, 2).Value & Format(Now(), "HH-mm-ss") & WordDoc.Name
WordDoc.Close
'Incrementa o contador
lContaLinhas = lContaLinhas + 1
Loop
' Fecha o aplicativo Word
WordApp.Quit
' Limpa os objetos
Set WordDoc = Nothing
Set WordApp = Nothing
End Sub
'Esta Função faz a substituição de um texto em um doc Word
' Precisa que o documento ja esteja aberto
'Recebe:
' pWordDoc - > Objeto que contem o documento que deve ser alterado
' pVariavelDeDocWord - > Representa uma variável para ser subtituida no documento Word
' pTextoParaSubstituir - > Recebe um texto que sera colocado no lugar da variavel
Private Function fnSubstituiVariavelnoDocumento( _
pWordDoc As Object, _
pVariavelDeDocWord As String, _
pTextoParaSubstituir As String) As Boolean
End Function
With pWordDoc.Content.Find
.Text = pVariavelDeDocWord ' "##NOME", "##TELEFONE", ETC
.Replacement.Text = pTextoParaSubstituir ' Cells(lContaLinhas, 2).Value
.Forward = True
.Wrap = 1 ' wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=2 ' wdReplaceAll
End With
Ei, Jadson!
A variável sCaminhoPasta aponta para uma pasta ("C:\Users\Jadson\Documents\VBA - INTEGRANDO OUTLOOK COM IAS"), mas o método Documents.Open espera o caminho completo de um arquivo específico, como um .docx. Ao tentar abrir uma pasta como se fosse um arquivo, o VBA retorna o erro de diretório inválido.
O arquivo que você quer abrir parece ser "Modelo Aviso Especial.docx", que está dentro dessa pasta. É indicado que fique assim, por exemplo:
sCaminhoPasta = "C:\Users\Jadson\Documents\VBA - INTEGRANDO OUTLOOK COM IAS\Modelo Aviso Especial.docx"
Segue os passos para copiar certinho o arquivo:
E notei que a função fnSubstituiVariavelnoDocumento
está incompleta no código que você compartilhou: o bloco With...End
With aparece fora do corpo da função, o que causa um erro de sintaxe. Teste o seguinte:
Private Function fnSubstituiVariavelnoDocumento( _
pWordDoc As Object, _
pVariavelDeDocWord As String, _
pTextoParaSubstituir As String) As Boolean
With pWordDoc.Content.Find
.Text = pVariavelDeDocWord
.Replacement.Text = pTextoParaSubstituir
.Forward = True
.Wrap = 1 ' wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=2 ' wdReplaceAll
End With
fnSubstituiVariavelnoDocumento = True
End Function
Espero que dê certinho e conte sempre com a nossa ajuda aqui no fórum.
Até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado!
Prezados, boa tarde.
Fiz isso que vocês falaram.
Agora apareceu outro erro.
Segue a mensagem de erro. Como solucionar? Não consegui.
Consegui resolver esse problema.
Coloquei o o with antes do End Function
Prezados, boa tarde.
Agora sim! Consegui gerar os arquivos!
Muito obrigado. pelo apoio.
Ei, Jadson! Tudo bem?
Fico muito feliz que tenha consigo, parabéns!
Qualquer dúvida, é só abrir um novo tópico que estaremos aqui no fórum para te ajudar!
Abraço!