Como automatizar mala direta por meio do VBA no Microsoft Excel

Anonim

Neste artigo, aprenderemos como automatizar a mala direta usando o VBA no Microsoft Excel.

Mala direta: - Esta é a fonte para mesclar as informações dos dados em texto e, em seguida, imprimir o documento. Para realizar tal operação, utilizamos o Microsoft Word.

Vamos entender com um exercício simples: -

Temos um formato de carta na folha de relatório e queremos aplicar a mala direta por meio do VBA, no qual também queremos alterar os detalhes da carta.

Temos 2 folhas. 1 folha contém dados com detalhes a quem queremos dar cartas. Nos primeiros dados, a coluna A contém o nome, a coluna B contém o endereço da rua, a coluna C contém a cidade, a coluna D região e a coluna E e a coluna F contêm o CEP. Existe um botão de comando para mover na folha de relatório.

2WL folha está tendo o formato de letra com 2 botões de comando; um botão para mover na planilha de dados e o segundo botão de comando deve funcionar para a mala direta

Primeiramente, iremos escrever o código VBA para o botão de comando dos Dados Principais. Precisamos seguir as etapas abaixo: -

  • Primeiro, inseriremos o botão de comando na planilha.
  • Vá para a guia Desenvolvedor e insira o botão de comando do Activexcontrol.
  • Renomeie o botão de comando com o nome “Carta”, e agora atribua a macro mencionada abaixo: -

Private Sub Main_data_Click ()

Planilhas ("Relatório"). Ativar

Alcance ("A19"). Mostrar

End Sub

Agora, inseriremos o segundo botão de comando na folha de relatório e atribuiremos a macro para mover na primeira folha. Precisamos seguir as etapas abaixo: -

  • Renomeie o botão de comando com o nome “Dados” e atribua a macro mencionada abaixo: -

Private Sub CommandButton2_Click ()

Planilhas ("Main_Data"). Ativar

Intervalo ("A1"). Mostrar

End Sub

Agora vamos escrever o código principal para mala direta seguindo as etapas abaixo: -

Insira o botão de comando e renomeie-o como “Letter Print” e atribua o código abaixo mencionado: -

Private Sub CommandButton1_Click ()

Dim StartrowAs Integer, lastrow As Integer

Dim MsgAs String

Dim TotalrecordsAs String

Dim name As String, Street_AddressAs String, city As String, region As String, country As String, postal As String

Totalrecords = "= counta (Main_Data! A: A)"

Faixa ("L1") = Total de registros

Dim mydate As Date

Definir WRP = Folhas ("Relatório")

mydate = Date
WRP.Range ("A9") = mydate

WRP.Range ("A9"). NumberFormat = "[$ -F800] dddd, mmmm, dd, aaaa"

WRP.Range ("A9"). HorizontalAlignment = xlLeft

Startrow = InputBox ("Digite o primeiro registro a ser impresso.")

lastrow = InputBox ("Digite o último registro para imprimir.")

If Startrow> lastrow Then

Msg = "ERROR" & vbCrLf & "A linha inicial deve ser menor que a última linha"

Msgbox Msg, vbCritical, "ExcelTip"

Fim se

Para i = Startrow para lastrow

name = Sheets ("Main_data"). Células (i, 1)

Street_Address = Folhas ("Main_data"). Células (i, 2)

cidade = Folhas ("Dados_principal"). Células (i, 3)

region = Sheets ("Main_data"). Células (i, 4)

country = Sheets ("Main_data"). Células (i, 5)

postal = Sheets ("Main_data"). Células (i, 6)

Planilhas ("Relatório"). Intervalo ("A7") = nome & vbCrLf & Street_Address & vbCrLf & cidade & região & país & vbCrLf & postal

Planilhas ("Relatório"). Intervalo ("A11") = "Prezado" & "" & nome & ","

CheckBox1 = Verdadeiro

If CheckBox1 Then

ActiveSheet.PrintPreview

Outro

ActiveSheet.PrintOut

Fim se

Proximo eu

End Sub

Explicação do código: - Primeiro, definiremos as variáveis, depois definiremos a data e o formato da data, depois definiremos a última linha e a linha inicial. Em seguida, criamos uma caixa de mensagem para transmitir a mensagem. Em seguida, definiremos os dados e o intervalo que queremos capturar na carta.

  • Para executar o código, pressione a tecla F5 no teclado.
  • Então você tem que inserir o primeiro ponto de registro. Depois disso, você receberá uma nova caixa de mensagem para inserir o último registro do ponto.

  • E então você obterá o documento mostrado abaixo

  • A carta será atualizada de acordo com os detalhes mencionados nos dados principais.

É assim que podemos automatizar a mala direta por meio do VBA no Microsoft Excel.