Jesteś obecnie w trybie offline. Czekamy na ponowne połączenie z Internetem.

JAK: Automatyzacja korespondencji seryjnej w programie Microsoft Word za pomocą języka Visual Basic

Zakończono świadczenie pomocy technicznej dla pakietu Office 2003

Firma Microsoft zakończyła świadczenie pomocy technicznej dla pakietu Office 2003 8 kwietnia 2014. Ta zmiana wpłynęła na Twoje aktualizacje oprogramowania i opcje zabezpieczeń. Dowiedz się, co to oznacza dla Ciebie i jak zapewnić sobie kontynuację ochrony.

Ten artykuł został opublikowany wcześniej pod numerem PL220607
Streszczenie
W tym artykule opisano, jak użyć programu Microsoft Word do utworzenia dokumentu korespondencji seryjnej za pomocą automatyzacji i języka Microsoft Visual Basic.
Więcej informacji
Istnieją dwa sposoby posługiwania się serwerem automatyzacji: użycie późnego powiązania lub wczesnego powiązania. W późnym powiązaniu metody nie są wiązane, dopóki część wykonywalna i serwer automatyzacji nie zostaną zadeklarowane jako Object. We wczesnym powiązaniu aplikacja już w trakcie opracowywania zna dokładny typ obiektu, z którym będzie się komunikować, i może zadeklarować jego obiekty jako określony typ. W tym przykładzie użyto wczesnego powiązania, które jest w większości przypadków uważane za lepsze, ponieważ zapewnia większą wydajność i bezpieczeństwo.

W celu wczesnego powiązania z serwerem automatyzacji trzeba ustawić odwołanie do biblioteki typów tego serwera. W programie Visual Basic można to zrobić w oknie dialogowym References. Aby otworzyć okno dialogowe References, kliknij polecenie References w menu Project. W tym przykładzie przed uruchomieniem kodu trzeba dodać odwołanie do biblioteki typów programu Word.

Budowanie przykładu automatyzacji

  1. Uruchom program Visual Basic i utwórz nowy projekt Standard EXE. Domyślnie zostaje utworzony formularz Form1.
  2. Dodaj przycisk CommandButton do formularza Form1.
  3. W menu Project kliknij polecenie References, aby otworzyć okno dialogowe References.
  4. Zaznacz pozycję Microsoft Word 11.0 Object Library, aby utworzyć odwołanie do biblioteki typów programu Microsoft Office Word 2003. W przypadku programu Word 2002 zaznacz pozycję Microsoft Word 10.0 Object Library. W przypadku programu Word 2000 zaznacz pozycję Microsoft Word 9.0 Object Library. W przypadku programu Word 97 zaznacz pozycję Microsoft Word 8.0 Object Library.
  5. Kliknij przycisk OK, aby zamknąć okno dialogowe References.
  6. W oknie kodu formularza Form1 dodaj następujący kod:
    Option ExplicitDim wrdApp As Word.ApplicationDim wrdDoc As Word.DocumentPrivate Sub Command1_Click()  Dim wrdSelection As Word.Selection  Dim wrdMailMerge As Word.MailMerge  Dim wrdMergeFields As Word.MailMergeFields  Dim StrToAdd As String  ' Tworzy wystąpienie programu Word i uwidacznia je.  Set wrdApp = CreateObject("Word.Application")  wrdApp.Visible = True  ' Dodaje nowy dokument.  Set wrdDoc = wrdApp.Documents.Add  wrdDoc.Select    Set wrdSelection = wrdApp.Selection  Set wrdMailMerge = wrdDoc.MailMerge  ' Tworzy plik danych korespondencji seryjnej.  CreateMailMergeDataFile  ' Tworzy ciąg i wstawia go do dokumentu.  StrToAdd = "Uniwersytet stanowy" & vbCr & _           "Wydział Inżynierii Elektrycznej"  wrdSelection.ParagraphFormat.Alignment = wdAlignParagraphCenter  wrdSelection.TypeText StrToAdd     InsertLines 4   ' Wstawia scalane dane.  wrdSelection.ParagraphFormat.Alignment = wdAlignParagraphLeft  Set wrdMergeFields = wrdMailMerge.Fields  wrdMergeFields.Add wrdSelection.Range, "Imię"  wrdSelection.TypeText " "  wrdMergeFields.Add wrdSelection.Range, "Nazwisko"  wrdSelection.TypeParagraph  wrdMergeFields.Add wrdSelection.Range, "Adres"  wrdSelection.TypeParagraph  wrdMergeFields.Add wrdSelection.Range, "Kod pocztowy"      InsertLines 2  ' Wyrównuje wiersz do prawej i wstawia pole daty' z bieżącą datą.  wrdSelection.ParagraphFormat.Alignment = _        wdAlignParagraphRight  wrdSelection.InsertDateTime _        DateTimeFormat:="dddd, MMMM dd, yyyy", _        InsertAsField:=False          InsertLines 2  ' Wyrównuje resztę dokumentu.  wrdSelection.ParagraphFormat.Alignment = _        wdAlignParagraphJustify    wrdSelection.TypeText "Szanowny Panie"  wrdMergeFields.Add wrdSelection.Range, "/Szanowna Pani"  wrdSelection.TypeText ","  InsertLines 2    ' Tworzy ciąg i wstawia go do dokumentu.  StrToAdd = "Dziękujemy za prośbę o plan zajęć na następny " & _      "semestr na Wydziale Inżynierii Elektrycznej. " & _      "Do tego listu dołączamy broszurę zawierającą " & _      "spis zajęć w następnym " & _      "semestrze na naszym Uniwersytecie. " & _      "W następnym semestrze na Wydziale Inżynierii Elektrycznej " & _      "będzie kilka nowych wykładów. " & _      "Wymieniamy je poniżej."  wrdSelection.TypeText StrToAdd    InsertLines 2    ' Wstawia tabelę z 9 wierszami i 4 kolumnami.  wrdDoc.Tables.Add wrdSelection.Range, NumRows:=9, _       NumColumns:=4  With wrdDoc.Tables(1)    ' Ustawia szerokość kolumn.    .Columns(1).SetWidth 51, wdAdjustNone    .Columns(2).SetWidth 170, wdAdjustNone    .Columns(3).SetWidth 100, wdAdjustNone    .Columns(4).SetWidth 111, wdAdjustNone    ' Ustawia cieniowanie pierwszego wiersza na jasnoszare.    .Rows(1).Cells.Shading.BackgroundPatternColorIndex = _       wdGray25    ' Pogrubia pierwszy wiersz.    .Rows(1).Range.Bold = True    ' Wyśrodkowuje tekst w komórce (1,1).    .Cell(1, 1).Range.Paragraphs.Alignment = wdAlignParagraphCenter        ' Wypełnia danymi każdy wiersz tabeli.    FillRow wrdDoc, 1, "Numer wykładu", "Nazwa wykładu", "Godziny", _       "Wykładowca"    FillRow wrdDoc, 2, "EE220", "Wstęp do elektroniki  II", _       "1:00-2:00 M,W,F", "Dr Mochnacki"    FillRow wrdDoc, 3, "EE230", "Teoria pola elektromagnetycznego I", _       "10:00-11:30 T,T", "Dr Lesiak"    FillRow wrdDoc, 4, "EE300", "Systemy ze sprzężeniem zwrotnym", _       "9:00-10:00 M,W,F", "Dr Jarocki"    FillRow wrdDoc, 5, "EE325", "Zaawansowane projektowanie cyfrowe", _       "9:00-10:30 T,T", "Dr Dumicz"    FillRow wrdDoc, 6, "EE350", "Zaawansowane systemy komunikacyjne", _       "9:00-10:30 T,T", "Dr Marczak"    FillRow wrdDoc, 7, "EE400", "Zaawansowana teoria mikrofal", _       "1:00-2:30 T,T", "Dr Stępień"    FillRow wrdDoc, 8, "EE450", "Teoria plazmy", _       "1:00-2:00 M,W,F", "Dr Janik"    FillRow wrdDoc, 9, "EE500", "Podstawy projektowania układów VLSI", _       "3:00-4:00 M,W,F", "Dr Borowik"  End With    ' Przechodzi do końca dokumentu.  wrdApp.Selection.GoTo wdGoToLine, wdGoToLast  InsertLines 2    ' Tworzy ciąg i wstawia go do dokumentu.  StrToAdd = "Dodatkowe informacje dotyczące " & _             "Wydziału Inżynierii Elektrycznej można " & _             "znaleźć w witrynie sieci Web pod adresem "  wrdSelection.TypeText StrToAdd  ' Wstawia hiperłącze do strony sieci Web.  wrdSelection.Hyperlinks.Add Anchor:=wrdSelection.Range, _     Address:="http://www.ee.pw.edu.pl/"  ' Tworzy ciąg i wstawia go do dokumentu.  StrToAdd = ".  Dziękujemy za zainteresowanie wykładami " & _             "na Wydziale Inżynierii Elektrycznej " & _             "Jeżeli ma Pan/Pani inne pytania, " & _             "prosimy o skontaktowanie się z numerem " & _             "555-1212." & vbCr & vbCr & _             "Z poważaniem" & vbCr & vbCr & _             "Irena Grabowska" & vbCr & _             "Wydział Inżynierii Elektrycznej" & vbCr  wrdSelection.TypeText StrToAdd   ' Wykonuje korespondencję seryjną.  wrdMailMerge.Destination = wdSendToNewDocument  wrdMailMerge.Execute False  ' Zamyka oryginalny formularz dokumentu.  wrdDoc.Saved = True  wrdDoc.Close False  ' Powiadamia użytkownika o zakończeniu.  MsgBox "Mail Merge Complete.", vbMsgBoxSetForeground  ' Zwalnia odwołania.  Set wrdSelection = Nothing  Set wrdMailMerge = Nothing  Set wrdMergeFields = Nothing  Set wrdDoc = Nothing  Set wrdApp = Nothing  ' Czyści plik tymczasowy.  Kill "C:\DataDoc.doc"End SubPublic Sub InsertLines(LineNum As Integer)  Dim iCount As Integer' Wstawia puste wiersze w liczbie LineNum.  For iCount = 1 To LineNum    wrdApp.Selection.TypeParagraph  Next iCountEnd SubPublic Sub FillRow(Doc As Word.Document, Row As Integer, _                   Text1 As String, Text2 As String, _                   Text3 As String, Text4 As String)                     With Doc.Tables(1)    ' Wstawia dane do określonej komórki.    .Cell(Row, 1).Range.InsertAfter Text1    .Cell(Row, 2).Range.InsertAfter Text2    .Cell(Row, 3).Range.InsertAfter Text3    .Cell(Row, 4).Range.InsertAfter Text4  End WithEnd SubPublic Sub CreateMailMergeDataFile()  Dim wrdDataDoc As Word.Document  Dim iCount As Integer  ' Tworzy źródło danych w pliku C:\DataDoc.doc, który zawiera dane pól.  wrdDoc.MailMerge.CreateDataSource Name:="C:\DataDoc.doc", _        HeaderRecord:="FirstName, LastName, Address, CityStateZip"' Otwiera plik w celu wstawienia danych.  Set wrdDataDoc = wrdApp.Documents.Open("C:\DataDoc.doc")  For iCount = 1 To 2    wrdDataDoc.Tables(1).Rows.Add  Next iCount' Wypełnia dane.  FillRow wrdDataDoc, 2, "Marcin", "Flisak", _        "ul. Różana 83 m. 99", "87-100 Toruń"  FillRow wrdDataDoc, 3, "Jan", "Kocoń", _        "ul. Żniwna 142", "09-400 Płock"  FillRow wrdDataDoc, 4, "Karol", "Woszczak", _        "ul. Cyrkowa 4", "00-842 Warszawa" ' Zapisuje i zamyka plik.  wrdDataDoc.Save  wrdDataDoc.Close FalseEnd Sub					
  7. Naciśnij klawisz F5 i kliknij przycisk, aby uruchomić przykład.
Materiały referencyjne
Aby uzyskać więcej informacji dotyczących automatyzacji pakietu Office, odwiedź witrynę pomocy technicznej Microsoft Office Development Support Center pod adresem:
Właściwości

Identyfikator artykułu: 220607 — ostatni przegląd: 02/12/2004 12:21:00 — zmiana: 5.0

  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Office Standard Edition 2003
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
  • kbhowto kbautomation KB220607
Opinia