Ir para conteúdo
Fórum Script Brasil
  • 0

Salvar Mala Direta Em Arquivos Separados


Axtype

Pergunta

Boa tarde galera!

É o seguinte, estou com um problemão, mas não estou conseguindo resolver, pois não tenho conhecimento avançado em VBA, peço por gentileza uma ajuda de vocês.

Tenho um modelo de carta no Word que captura alguns campos de uma planilha que tenho no excel, ele captura o campo E-mail e Senha.

Até consigo gerar a mala direta, mas quando tenho muitos registros, ele gera em um arquivo só todos os registros e preciso que gere em arquivos .doc separados.

Alguém saberia me dizer como fazer isso, mas peço que detalhem o máximo para mim pois sou totalmente novato nesse assunto.

Ah detalhe em minhas pesquisas até encontrei algo parecido, mas não consegui fazer funcionar, pois não sei se estou fazendo a coisa certa, o codigo que encontrei esta abaixo em vermelho.

Obrigado Galera!

CODE

Sub SalvaComo Arqs

' Converte todas as seções para subdocumentos

TudoParaSubDocs ActiveDocument

' Salva cada subdocumento como um arquivo separado

SalvaTodosSubDocs ActiveDocument

End Sub

CODE

Sub TudoParaSubDocs(ByRef doc As Word.Document)

Dim ctaSec As Long

Dim NrSecs As Long

NrSecs = doc.Sections.Count

' Inicial pelo final porque a criação de

' Subdocs iinsere seções adicionais

For ctaSec = NrSecs - 1 To 1 Step -1

doc.Subdocuments.AddFromRange doc.Sections(ctaSec).Range

Next ctaSec

End Sub

CODE

Sub SalvaTodosSubDocs(ByRef doc As Word.Document)

Dim subdoc As Word.Subdocument

Dim NovoDoc As Word.Document

Dim ContaDocs As Long

ContaDocs = 1

' Deve estar em Exibir Mestre para trabalhar com

' Subdocs como arquivos separados

doc.ActiveWindow.View = wdMasterView

For Each subdoc In doc.Subdocuments

Set NovoDoc = subdoc.Open

' Remove as quebras de seção Próxima Página

' Geradas pela fusão dos arquivos

RemoveQuebrasSec NovoDoc

With NovoDoc

.SaveAs FileName:="Arquivo" & CStr(ContaDocs)

.Close

End With

ContaDocs = ContaDocs + 1

Next subdoc

End Sub

CODE

Sub RemoveQuebrasSec(doc As Word.Document)

With doc.Range.Find

.ClearFormatting

.Text = "^b"

With .Replacement

.ClearFormatting

.Text = ""

End With

.Execute Replace:=wdReplaceAll

End With

End Sub

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...