Kontroluj Word z Excela za pomocą VBA w Microsoft Excel 2010

Anonim

Wiele razy trzeba skopiować dane z pliku Excela do dokumentu Word. Możesz to zrobić bardzo łatwo za pomocą makra. Makro otworzy nowy/istniejący dokument ze słowem, skopiuje zawartość, a następnie zapisze i zamknie słowo doc. Zobaczmy, jak to się robi.

Kod, którego możesz użyć to -

Opcja Wyraźna

Sub UtwórzNowyWordDoc()
Dim i jako liczba całkowita
Dim wrdApp As Object, wrdDoc As Object
Ustaw wrdApp = CreateObject("Word.Application")
wrdApp.Visible = Prawda
Ustaw wrdDoc = wrdApp.Documents.Add
Z wrdDoc
Dla i = 1 do 100
.Content.InsertAfter „Oto przykładowa linia testowa #” & i
.Content.InsertParagraphAfter
Dalej ja
Jeśli katalog(„B:\Test\MyNewWordDoc.docx”) „” Następnie zabij „B:\Test\MyNewWordDoc.docx”
.SaveAs („B:\Test\MyNewWordDoc.docx”)
.Blisko
Kończyć z
wrdApp.Zamknij
Ustaw wrdDoc = Nic
Ustaw wrdApp = Nic
Napis końcowy

Aby skopiować powyższy kod do swojego pliku,

  • Naciśnij Alt + F11 na klawiaturze
  • Po lewej stronie zobaczysz obiekty Microsoft Excel
  • Kliknij prawym przyciskiem myszy i wybierz Wstaw
  • Następnie kliknij Moduł
  • Skopiuj kod do okna kodu po prawej stronie

Zobaczmy teraz, jak działa ten kod -

Najpierw deklarujemy zmienne, których potrzebujemy -i jako liczbę całkowitą, aby zwiększyć każdy wiersz w miarę jego wypełniania z pliku Excela do słowa doc. Następnie dwie zmienne obiektowe wrdApp i wrdDoc, wrdApp to obiekt aplikacji programu Word, a wrdDoc to obiekt dokumentu programu Word.

Ustaw wrdApp = CreateObject("Word.Application")

Jeśli program Word jest już uruchomiony w twoim systemie,Utwórz obiekt utworzy nową instancję programu Word. Tak więc ta linia przypisuje zmienną obiektu wrdApp do aplikacji Word, której możesz użyć w dalszej części kodu.

wrdApp.Visible = Prawda

Nowo utworzone wystąpienie programu Word nie będzie widoczne podczas jego tworzenia. Aby był widoczny, musisz ustawić wrdApp.Visible = True, aby był widoczny.

Ustaw wrdDoc = wrdApp.Documents.Add

Stworzyliśmy nową instancję aplikacji tekstowej, ale nie otworzyliśmy jeszcze pustego dokumentu tekstowego. Więc to polecenie otworzy nowy dokument Word. Obiekt wrdDoc został przypisany do tego nowego dokumentu, więc możemy go użyć w dalszej części kodu.

Jeśli nie chcesz otwierać nowego skoroszytu, ale otworzyć istniejący skoroszyt, możesz zastąpić ten wiersz

Ustaw wrdDoc = wrdApp.Documents.Open („B: Moje dokumenty WordDocs Doc1.docx”)

Ten wiersz otwiera istniejący dokument Word, który został zapisany w określonej lokalizacji.

Z wrdDoc… .Zakończ na

To jest nasza pętla „With”, która będzie działać całkowicie z obiektem wrdDoc. Po otwarciu tej pętli nie musisz ponownie powtarzać tekstu „wrdDoc” w tej pętli. Możesz zacząć bezpośrednio od kropki („.”) przed dowolnymi obiektami związanymi z wrdDoc. Ta pętla kończy się na Kończyć z oświadczenie. Po wprowadzeniu instrukcji End With nie można odwoływać się do obiektów po wrdDoc za pomocą samego „.”.

Dla i = 1 do 100
.Content.InsertAfter „Oto przykładowa linia testowa #” &i
.Content.InsertParagraphAfter
Dalej ja

To jest pętla „For”. Zwiększa się od 1 do 100, a przy każdym wzroście wstawia wiersz z tekstem „Oto przykładowa linia testowa #”, a następnie dodaje numer przyrostu. Następnie wstawia podział wiersza/podział akapitu, aby następny przyrost pojawił się w następnym wierszu, jak nowy akapit.

Tak więc ten proces zostanie powtórzony 100 razy, ponieważ pętla for oznacza dla i = 1 do 100. To jest wynik, który otrzymasz -

Jeśli katalog(„B:\Test\MyNewWordDoc.Docx”) „” Następnie zabij „B:\Test\MyNewWordDoc.docx”

.SaveAs („B:\Test\MyNewWordDoc.docx”)

.Blisko

Po zakończeniu pętli „For” kod sprawdzi, czy plik MyNewWordDoc.docx istnieje. Jeśli tak, usunie go. A następnie zapisze nowy plik pod tą samą nazwą i zamknie plik.

wrdApp.Zamknij

Ustaw wrdDoc = Nic
Ustaw wrdApp=Nic

Aplikacja słowa zostaje zamknięta, a następnie 2 utworzone obiekty zostaną zwolnione lub ustawione na „Nic”, dzięki czemu pamięć zajmowana przez te obiekty zostanie zwolniona. To cały kod, który zajmuje się kopiowaniem treści z Excela do Worda.