Ir ao conteúdo

Posts recomendados

Postado

Olá, Galera!

 

Eu tenho código VBA que faz gerar vários pdf separados de uma mala direta, mas aparece esse erro em tempo de execução '5852'

Poderia me ajudar, por favor.

 

Sub salvamaladireta()
Application.ScreenUpdating = False
Dim qtde As Integer
Dim nomeArquivo As String
Dim registro As Integer
Dim nomearquivouniorg As String


ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord

qtde = ActiveDocument.MailMerge.DataSource.RecordCount

For registro = 1 To qtde

nomeArquivo = ActiveDocument.MailMerge.DataSource.DataFields("NOME").Value 'no lugar de NAME voce colona o     nome da coluna da sua base de dados'
nomearquivouniorg = ActiveDocument.MailMerge.DataSource.DataFields("NOME").Value 'no luga de Uniorg voce colona     o nome da coluna da sua base de dados'

With ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument
    .SuppressBlankLines = True
    With .DataSource
        .FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
        .LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
    End With
    .Execute Pause:=False
End With
ActiveDocument.SaveAs2 FileName:="C:\Users\loren\Desktop\", FileFormat:= _
    wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
    :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
    :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
    SaveAsAOCELetter:=False, CompatibilityMode:=15
    'O trecho C:\Users\Thiago_2\Desktop\Example Merge Document\TERMO ADITIVO DE CONTRATO - voce deve substituir pelo diretorio da sua pasta onde ira salvar os arquivos. A parte TERMO ADITIVO DE CONTRATO o inicio do nome do documento. Um inicio fixo que sera igual para todos'
ActiveWindow.Close
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord

Next registro
Application.ScreenUpdating = True
End Sub

 

O erro aparece nessa linha ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord

POR FAVOR!

Postado

Esse erro normalmente aparece quando objeto MailMerge não existe e quando você está tentando executar a mala direta.

Experimente primeiro, criar uma mala direta em seu documento do Word.

Basta usar o assistente e esse objeto será preenchido automaticamente e depois execute o código.

 

  • Curtir 1
Postado
11 horas atrás, Basole disse:

Esse erro normalmente aparece quando objeto MailMerge não existe e quando você está tentando executar a mala direta.

Experimente primeiro, criar uma mala direta em seu documento do Word.

Basta usar o assistente e esse objeto será preenchido automaticamente e depois execute o código.

 

Eu já faço isso e continua mostrando o erro :(

Postado
4 minutos atrás, Basole disse:

@Rayane Parreira Resende qual o erro que aparece agora e em qual trecho? 

Permanece na mesmo linha. Eu faço a mala direta certinha salvo ela depois mesclo ela salvo novamente e depois executo ela, mas aparece esse erro. Já pesquisei muito sobre ele mas não encontro solução. 

 

7 minutos atrás, Basole disse:

@Rayane Parreira Resende qual o erro que aparece agora e em qual trecho? 

 

Eu consegui um código de gerar os arquivos, mas queria que eles saíssem com o nome que está no Excel. As vezes gero 50 arquivos e preciso ficar renomeando isso.  

Postado
13 minutos atrás, Rayane Parreira Resende disse:

........ mas queria que eles saíssem com o nome que está no Excel. As vezes gero 50 arquivos e preciso ficar renomeando isso.  

 

Disponibilize o referido código e um arquivo do Excel com alguns dados para que tentamos ajudar nisso

  • Curtir 1
Postado

@Rayane Parreira Resende  experimente o codigo agora com as alterações 

 

Sub SalvaMalaDireta()
Application.ScreenUpdating = False
Dim qtde As Integer
Dim nomeArquivo As String
Dim registro As Integer
Dim nomearquivouniorg As String

On Error GoTo tR_eRROR

With ActiveDocument.MailMerge.DataSource
.ActiveRecord = wdFirstRecord
End With

qtde = ActiveDocument.MailMerge.DataSource.RecordCount

For registro = 1 To qtde

nomeArquivo = ActiveDocument.MailMerge.DataSource.DataFields("NOME_").Value
nomearquivouniorg = ActiveDocument.MailMerge.DataSource.DataFields("LOCALIDADE_").Value
With ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument
    .SuppressBlankLines = True
    With .DataSource
        .FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
        .LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
    End With
    .Execute Pause:=False
End With

ActiveDocument.SaveAs2 FileName:="C:\Users\loren\Desktop\" & nomeArquivo, FileFormat:= _
    wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
    :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
    :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
    SaveAsAOCELetter:=False, CompatibilityMode:=15
    
ActiveWindow.Close
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord

Next registro
tR_eRROR:
Application.ScreenUpdating = True

End Sub

 

  • Curtir 2
  • Obrigado 1
Postado
7 horas atrás, Basole disse:

@Rayane Parreira Resende  experimente o codigo agora com as alterações 

 

Sub SalvaMalaDireta()
Application.ScreenUpdating = False
Dim qtde As Integer
Dim nomeArquivo As String
Dim registro As Integer
Dim nomearquivouniorg As String

On Error GoTo tR_eRROR

With ActiveDocument.MailMerge.DataSource
.ActiveRecord = wdFirstRecord
End With

qtde = ActiveDocument.MailMerge.DataSource.RecordCount

For registro = 1 To qtde

nomeArquivo = ActiveDocument.MailMerge.DataSource.DataFields("NOME_").Value
nomearquivouniorg = ActiveDocument.MailMerge.DataSource.DataFields("LOCALIDADE_").Value
With ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument
    .SuppressBlankLines = True
    With .DataSource
        .FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
        .LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
    End With
    .Execute Pause:=False
End With

ActiveDocument.SaveAs2 FileName:="C:\Users\loren\Desktop\" & nomeArquivo, FileFormat:= _
    wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
    :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
    :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
    SaveAsAOCELetter:=False, CompatibilityMode:=15
    
ActiveWindow.Close
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord

Next registro
tR_eRROR:
Application.ScreenUpdating = True

End Sub

 

Nossa salvooou! O que eu altero no código para gerar em pdf os documentos ? 

@Basole Conseguir gerar eles em pdf nossa muito obrigadoooooooo! 

 

Uma pergunta: Nesse trecho

 

nomeArquivo = ActiveDocument.MailMerge.DataSource.DataFields("NOME_").Value
nomearquivouniorg = ActiveDocument.MailMerge.DataSource.DataFields("LOCALIDADE_").

 

Na segunda linha precisa colocar o nome da ultima coluna do banco de dados para funcionar? 

  • Curtir 1
  • Solução
Postado

@Rayane Parreira Resende Este código, a pessoa que compartilhou, provavelmente ao salvar cada documento,acrescentou no nome a organização que continha na base de dados:

 

nomearquivouniorg = ActiveDocument.MailMerge.DataSource.DataFields("LOCALIDADE_")

 

No seu caso se quiser acrescentar a sigla do Estado (localidade), é só concatenar com o nomeArquivo & "_" & nomearquivouniorg

 

* Mas pode desconsiderar essa linha

 

  • Curtir 3
  • 6 meses depois...
Postado

@Basole preciso de ajuda.

 

Eu fiz uma pergunta, mas excluíram.

to tentando salvar os arquivos em pdf individuais com os nomes da minha coluna "OBS" mas não estou conseguindo, quando não é um erro (5852) é outro que não consigo entender o que significa. 

 

Algumas informações para auxiliar

 

Minha Pasta para salvamento: C:\Users\rosane.oliveira\Documents\termos aditivos

nome da coluna do excel para salvar como nome do arquivo de pdf individual: OBS

numero e letra da coluna (arquivo de excel q usei para gerar mala direta no word) que contem as informações para renomear os arquivos: Q2

tipo de arquivo desejado a ser salvo: PDF

primeira letra ou palavra de cada página do word:  ESTADO

ultima letra/palavra da página do termo aditivo: Contratado (A)

 

eu ja não sei mais o que fazer gente, são mais de 1000 que eu vou ter q renomear se isso não der certo!

 

 

PRORROGAÇÃO TEMPORARIOS - 2022 -.xlsx termos aditivos.docx

Postado

@rosanezane bom dia, 

 

É necessário vincular o arquivo do Excel que contém os dados.

 

Caso não tenha feito este procedimento:

Abra o documento, vá em Correspondências > Selecionar Destinatários > Usar uma lista Existente, 

 

image.png.e8230505bc8c2dfefeb78fcadc2b1e5a.png

 

 

e selecione a Pasta de trabalho com os dados (Excel) :

image.png.7b33dff54eef529ae89466ce4e215879.png

 

E selecione a Planilha (aba), conf a img acima

 

 

17 horas atrás, rosanezane disse:

primeira letra ou palavra de cada página do word:  ESTADO

ultima letra/palavra da página do termo aditivo: Contratado (A)

 

Não Entendi o que quis dizer com as informações acima 

Segue em anexo o documento com a macro atualizada para salvar no formato PDF de acordo com o caminho (diretorio), informado.

 

Para executar aperte as teclas [ Alt + F8 ] e selecione a macro => "SalvarMalaDireta_PDF"

 

 

 

TermosAditivosl.zip

  • Curtir 1
  • Amei 1
Postado
1 hora atrás, Basole disse:

primeira letra ou palavra de cada página do word:  ESTADO

ultima letra/palavra da página do termo aditivo: Contratado (A)

Porque ensinaram que para salvar individualmente, teria que além de gerar a mala direta, editar os arquivos individualmente lá em concluir e mesclar.

Mas para identificar onde começa uma página e onde termina essa mesma página (na hora de salvar), precisa de referencias. Dai o Inicio e final de cada página

 

@Basole ja sou fã!

deu tudo certo aqui !

😍😭

  • Curtir 1
Postado

@rosanezane a macro não está limitada, ela está programada para executar de acordo com os destinátarios vinculados pelo word ao arquivo do Excel.

 

image.png.5cd1492cc5df7c07fa3635ba38e84110.png

De acordo com a imagem acima, voce pode verificar no seu Documento quantas linhas do excel está vinculadas. 

 

1 - Verifique na sua planilha do Excel se não possui alguma linha/coluna vazia, no intervalo. 

2 - Tente atualizar o vinculo com sua planilha, caso tenha alterado a quantidade de linhas na planilha, após atualizar a lista de destinatários no documento.

3 - Enfim caso não de certo as opções veremos outras possibilidades. 

 

 

  • Curtir 1
Postado
3 horas atrás, Basole disse:

@rosanezane a macro não está limitada, ela está programada para executar de acordo com os destinátarios vinculados pelo word ao arquivo do Excel.

 

image.png.5cd1492cc5df7c07fa3635ba38e84110.png

De acordo com a imagem acima, voce pode verificar no seu Documento quantas linhas do excel está vinculadas. 

 

1 - Verifique na sua planilha do Excel se não possui alguma linha/coluna vazia, no intervalo. 

2 - Tente atualizar o vinculo com sua planilha, caso tenha alterado a quantidade de linhas na planilha, após atualizar a lista de destinatários no documento.

3 - Enfim caso não de certo as opções veremos outras possibilidades. 

 

 

Descobri o que ocorreu! Tive que apagar os "." Pontos das palavras da coluna OBS (utilizadas para salvar ) aí deu certo ♥️

  • Curtir 1
Postado

@rosanezane é verdade não é aceito o ponto e alguns caracteres que não são permitidos utilizar em nomes de arquivos:

   ( \ / | ? < > * .“  )                                                                                                                                    

Mas que bom que encontrou o problema e deu tudo certo :aplausos:

  • Curtir 1
  • 3 meses depois...
Postado

Oi! @basole

 

Poderia me ajudar, por gentileza. 

 

Quando eu gero as cartas mostra uma tela do word e ai preciso ficar clicando várias vezes em não salvar o documento da mala direta em formato word, por mais que eu esteja gerando eles em pdf. 

 

Você consegue me ajudar ? 

 

Vou fazer uma mala para mais de 1000 documentos.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...