W tym artykule dowiemy się, jak zautomatyzować korespondencję seryjną za pomocą VBA w programie Microsoft Excel.
Korespondencja seryjna: - jest to źródło scalania informacji z danych w tekst, a następnie drukowania dokumentu. Do wykonania takiej operacji wykorzystujemy Microsoft Word.
Zrozummy za pomocą prostego ćwiczenia:-
W arkuszu raportu mamy format listu i chcemy zastosować korespondencję seryjną za pośrednictwem VBA, w której chcemy również zmienić szczegóły listu.
Mamy 2 arkusze. 1 arkusz zawiera dane z danymi do kogo chcemy przekazać listy. W pierwszych danych kolumna A zawiera nazwę, kolumna B zawiera adres pocztowy, kolumna C zawiera miasto, kolumna D region, a kolumna E i kolumna F zawierają kod pocztowy. W arkuszu raportu jest jeden przycisk polecenia.
2NS arkusz ma format literowy z 2 przyciskami poleceń; jeden przycisk do poruszania się po arkuszu danych, a drugi przycisk polecenia służy do korespondencji seryjnej
Najpierw napiszemy kod VBA dla przycisku polecenia danych głównych. Musimy wykonać poniższe kroki:-
- Najpierw wstawimy przycisk polecenia w arkuszu.
- Przejdź do zakładki Deweloper, a następnie wstaw przycisk Polecenie z Activexcontrol.
- Zmień nazwę przycisku polecenia na „Litera” , a teraz przypisz poniższe makro:-
Prywatna sub Main_data_Click()
Arkusze ("Raport"). Aktywuj
Zakres ("A19"). Pokaż
Napis końcowy
Teraz wstawimy drugi przycisk polecenia w arkuszu Raport i przypiszemy makro do poruszania się po pierwszym arkuszu. Musimy wykonać poniższe kroki:-
- Zmień nazwę przycisku polecenia na „Dane” i przypisz poniższe makro:-
Prywatna Sub CommandButton2_Click()
Arkusze ("Main_Data"). Aktywuj
Zakres ("A1"). Pokaż
Napis końcowy
Teraz napiszemy główny kod korespondencji seryjnej, wykonując poniższe czynności:-
Wstaw przycisk polecenia i zmień jego nazwę na „Drukowanie listu”, a następnie przypisz poniższy kod:-
Prywatna Sub CommandButton1_Click()
Dim StartrowAs Integer, lastrow As Integer
Dim MsgAs String
Dim TotalrecordsAs String
Nazwa dim As String, Street_AddressAs String, miasto As String, region As String, kraj As String, poczta As String
Totalrecords = "=counta(Main_Data!A:A)"
Zakres ("L1") = Suma rekordów
Przyciemnij moją datę jako datę
Ustaw WRP = Arkusze("Raport")
mojadata = Data
WRP.Range("A9") = mojadata
WRP.Range("A9").NumberFormat = "[$-F800]dddd,mmmm,dd,rrrr"
WRP.Range("A9").HorizontalAlignment = xlLeft
Startrow = InputBox("Wprowadź pierwszy rekord do wydrukowania.")
lastrow = InputBox("Wprowadź ostatni rekord do wydrukowania.")
Jeśli Startrow>lastrow Wtedy
Msg = "BŁĄD" &vbCrLf& "Wiersz początkowy musi być mniejszy niż ostatni"
Msgbox Msg, vbCritical, „ExcelTip”
Zakończ, jeśli
For i = Startrow Do lastrow
name = Arkusze("Główne_dane").Komórki(i, 1)
Street_Address = Arkusze("Główne_dane").Komórki(i, 2)
miasto = Arkusze("Główne_dane").Komórki(i, 3)
region = Arkusze("Główne_dane").Komórki(i, 4)
kraj = Arkusze("Główne_dane").Komórki(i, 5)
pocztowy = Arkusze("Główne_dane").Komórki(i, 6)
Arkusze("Raport").Zakres("A7") = nazwa &vbCrLf&Street_Address&vbCrLf& miasto i region & kraj &vbCrLf& poczta
Arkusze("Raport").Range("A11") = "Szanowni Państwo" & " " & nazwa & ","
Pole wyboru1 = Prawda
Jeśli pole wyboru 1 to
ActiveSheet.Podgląd wydruku
W przeciwnym razie
Aktywny arkusz.Wydruk
Zakończ, jeśli
Dalej ja
Napis końcowy
Objaśnienie kodu: - Najpierw zdefiniujemy zmienne, następnie zdefiniujemy datę i format daty, następnie zdefiniujemy ostatni wiersz i wiersz początkowy. Następnie stworzyliśmy skrzynkę wiadomości do przesłania wiadomości. Następnie zdefiniujemy dane i zakres, który chcemy uchwycić literowo.
- Aby uruchomić kod, naciśnij klawisz F5 na klawiaturze.
- Następnie musisz wpisać pierwszy punkt rekordowy. Następnie otrzymasz nowe okno wiadomości, aby wprowadzić ostatni rekord punktu.
- A następnie otrzymasz pokazany poniżej dokument
- List zostanie zaktualizowany zgodnie ze szczegółami wymienionymi w danych głównych.
W ten sposób możemy zautomatyzować korespondencję seryjną za pomocą VBA w programie Microsoft Excel.