Zarządzanie Excelem z poziomu innej aplikacji
W razie potrzeby możesz również zarządzać Excelem z poziomu innej aplikacji (np. programu napisanego w innym języku programowania lub procedury VBA w Wordzie). Przykładowo, możesz wykonać obliczenia w Excelu i zwrócić wynik do Worda.
Dokument Worda z tym przykładem - AutomatyzacjaExcela.docm, oraz skoroszyt Excela - ObliczaniePożyczki.xlsx.
***
Skoroszyt wykorzystany w procedurze Worda pokazano na rysunku 1.
Rysunek 1. Ten arkusz jest wykorzystywany przez procedurę VBA dokumencie Worda
Po otwarciu dokumentu Worda uruchom makro MakeLoanTabe.
Makro (procedura) wyświetla pytanie do użytkownika o wartość pożyczki i wstawia ją do komórki C7 arkusza (komórka nosi nazwę LoanAmount).
Przeliczenie arkusza powoduje aktualizację danych w tabeli zlokalizowanej w zakresie F3:I12 i aktualizuje wykres.
Dane wraz z wykresem są następnie kopiowane z obiektu Excela i wklejane do nowego dokumentu Worda. Wyniki pokazano na rysunku 2.
Rysunek 2. Procedura VBA Worda wykorzystała Excela do utworzenia tego dokumentu
***
1. Zapytanie o wartości
LoanAmt = InputBox("Kwota pożyczki?")
2. End
If LoanAmt = "" Then Exit Sub
3. Czyszczenie dokumentu
ThisDocument.Content.Delete
4. Tworzenie obiektu Sheet (procedura tworzy obiekt Worksheet Excela (którego nazwa symboliczna to Excel.Sheet) na podstawie istniejącego skoroszytu)
Wbook = ThisDocument.Path & "\ObliczaniePożyczki.xlsm"
Set XLSheet = GetObject(Wbook, "Excel.Sheet").ActiveSheet
5. Umieszczanie wartości na arkuszu
XLSheet.Range("LoanAmount") = LoanAmt
6. Aktualizację danych
XLSheet.Calculate
7. Wstawianie nagłówka strony
Selection.Style = "Tytuł"
Selection.TypeText "Kwota pożyczki: " & _
Format(LoanAmt, "#,##0 zł")
Selection.TypeParagraph
8. Kopiowanie danych z arkusza i wklejanie do dokumentu
XLSheet.Range("F3:I12").Copy
Selection.Paste
9. Kopiowanie wykresu i wklejanie do dokumentu
XLSheet.ChartObjects(1).Copy
Selection.PasteSpecial _
Link:=False, _
DataType:=wdPasteMetafilePicture, _
Placement:=wdInLine
10. Usuwanie obiektu
Set XLSheet = Nothing