5119


Sterowanie Wordem z poziomu Excela

W przykładzie zademonstrujemy sesję automatyzacji z wykorzystaniem Worda.

Procedura utworzy trzy notatki zdefiniowane przez użytkownika w Wordzie, a następnie zapisze każdy dokument do pliku Region1.docx, Region2.docx, Region3.docx.

Na rysunku 1 zaprezentowano dokument utworzony za pomocą procedury.

0x01 graphic

Rysunek 1. Ten dokument Worda został utworzony za pomocą procedury Excela

Informacje wykorzystane do utworzenia notatek są zapisane w arkuszu Excela, tak jak pokazano na rysunku 2.

0x01 graphic

Rysunek 2. Word automatycznie generuje trzy notatki na podstawie danych zapisanych w arkuszu Excela

Skoroszyt z tym przykładem - TworzenieNotatek.xlsm.

0. Utwóz plik Excela.

1. Należy utworzyć procedure

Sub MakeMemos()

. . .

End Sub

2. Procedura rozpoczyna uruchomienie Worda i utworzenie obiektu (późne wiązanie)

Set WordApp = CreateObject("Word.Application")

' WordApp.Visible = True

3. Pobieranie informacji z arkusza

message = Sheets("Arkusz1").Range("Notatka")

Tekst notatki zapisano w zakresie o nazwie Notatka (w komórce E7) (rysunek 3). Wszystkie działania odbywają się w tle: oznacza to, że Word jest niewidoczny.

0x01 graphic

0x01 graphic

Rysunek 3. Zakres o nazwie Notatka (w komórce E7)

4. Procedura przetwarza w pętli trzy wiersze danych zapisanych w arkuszu Arkuszl.

Przetwarzanie w pętli wszystkich rekordów w arkuszu Arkusz1

For i = 1 To Application.CountA(Sheets("Arkusz1").Range("A:A"))

Next i

5. Aktualizacja informacji o postępie zadania na pasku stanu

Application.StatusBar = "Przetwarzanie rekordu " & i

Po skonczanu przetwarzania w pętli wszystkich rekordów

Application.StatusBar = ""

6. Przypisanie bieżących danych do zmiennych

Region = Sheets("Arkusz1").Cells(i, 1).Value

SalesNum = Sheets("Arkusz1").Cells(i, 2).Value

SalesAmt = Format(Sheets("Arkusz1").Cells(i, 3).Value, "#,000")

7. Procedura wykorzystuje metody i właściwości Worda do utworzenia każdej notatki i zapisania jej na dysku.

Wysłanie poleceń do Worda

0x01 graphic

Tworzenie powyższego makra składało się z kilku etapów.

Najpierw zarejestrowałem w Wordzie makro obejmujące działania tworzenia nowego dokumentu, wprowadzania i formatowania tekstu oraz zapisywania pliku. Dzięki temu uzyskałem informacje o wła­ściwościach i metodach potrzebnych do wykonania zadania.

Oryginalne makro zawierało na przykład następującą instrukcję:

Documents.Add

Instrukcję tę zmodyfikowałem w następujący sposób:

With WordApp

.Documents.Add

' pozostałe instrukcje

End With

Następnie skopiowałem makro do modułu Excela.

8. Zapis pliku do dysku

WordApp.ActiveDocument.SaveAs Filename:= ThisWorkbook.Path & _

"\" & Region & ".docx "

9.Zniszczenie obiektu

WordApp.Quit

Set WordApp = Nothing

10. Odtworzenie paska stanu

Application.StatusBar = ""

11. Communikat

MsgBox Application.CountA(Sheets("Arkusz1").Range("A:A")) _

& " notatki utworzono i zapisano w " & _

ThisWorkbook.Path

0x01 graphic
Rysunek 4. Communikat



Wyszukiwarka