Falta pouco!

0 dias

0 horas

0 min

0 seg

Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Substituir o caminho do arquivo onde está falando para substituir, mas deu erro

Boa noite.

Substituir o caminho do arquivo onde está falando para substituir, mas deu erro. Como solucionar esse problema ?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

7 respostas

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:

  1. Cheque se o caminho do arquivo está correto. Você pode fazer isso copiando o caminho diretamente do explorador de arquivos do Windows.

  2. Revise se o caminho do arquivo está entre aspas duplas no código, principalmente se houver espaços.

  3. Verifique se você tem permissão para acessar o diretório e o arquivo em questão.

  4. 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

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Aí o caminho ficou assim

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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

solução!

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:

  • Abra o Explorador de Arquivos do Windows e navegue até a pasta "C:\Users\Jadson\Documents\VBA - INTEGRANDO OUTLOOK COM IAS".
  • Localize o arquivo exato que você quer abrir (por exemplo, "Modelo Aviso Especial.docx"). Clique com o botão direito no arquivo, selecione "Copiar como caminho" (ou segure Shift e clique direito para essa opção aparecer).
  • Cole esse caminho completo no código VBA, substituindo a linha de sCaminhoPasta. O resultado deve incluir a extensão do arquivo, como .docx.
  • Certifique-se de que o caminho esteja entre aspas duplas e sem espaços extras no início ou fim.
  • Salve o módulo VBA e teste o código novamente. Se o arquivo existir e você tiver permissão de acesso, o Word deve abrir o documento sem erro.

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.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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!