Excel'den Word'e Makro - Excel İpuçları

İçindekiler

Bu haftanın Excel sorusunu sağlayan Jake'e teşekkürler:

Excel elektronik tablo verilerini alacak ve her veri satırı için bir Word dosyası oluşturacak bir makro nasıl yazabilirim?

Jake - ne harika bir fikir! Sık sık tüm şirket için satış sonuçlarım var ve her temsilciye yalnızca Word'deki bilgilerini gönderebilmek harika olurdu. Bunu, Adres Mektup Birleştirme kullanarak Word'den yapabilirsiniz, ancak Word'ü Excel'den kontrol etmek ilginç bir olasılıktır. Aşağıdaki örnek oldukça basittir, ancak oldukça gelişmiş uygulamalar yapmak için bu kavram üzerine inşa edilebilir.

İlk olarak, örnek bir veri kümesine bir göz atalım. İki sayfadan oluşan bir çalışma kitabı oluşturdum - biri Veri, diğeri Şablon. Veri çalışma sayfasında birçok veri satırı vardır. Şablon çalışma sayfası, oluşturmak istediğim Word Belgesi'nin yapısına sahip. Bu durumda, veritabanının A sütunundaki adı şablondaki C4 hücresine kopyalamak isteyeceğim. Veritabanının B: E sütunları C10: C13 hücrelerine gidecektir.

İlk olarak, örnek bir veri kümesine bir göz atalım. İki sayfadan oluşan bir çalışma kitabı oluşturdum - biri Veri, diğeri Şablon. Veri çalışma sayfasında birçok veri satırı vardır. Şablon çalışma sayfası, oluşturmak istediğim Word Belgesi'nin yapısına sahip. Bu durumda, veritabanının A sütunundaki adı şablondaki C4 hücresine kopyalamak isteyeceğim. Veritabanının B: E sütunları C10: C13 hücrelerine gidecektir.

Veri Sayfası
Şablon Sayfası

VB Düzenleyiciyi alt-F11 ile başlatın. Burada Word komutları vermek istediğimizden, Araçlar> Referanslar'a gidin. "Microsoft Word 8" i bulmak için aşağı kaydırın ve bu öğeyi seçmek için yanındaki kutuyu işaretleyin.

Word'ü Excel'den kontrol etmek için, Word uygulamasını temsil edecek bir değişken tanımlamanız gerekir. Aşağıdaki örnekte appWD kullandım. Excel Makrosundaki Word uygulamasına uygulamak istediğiniz herhangi bir komut için, komutun önüne appWD yazmanız yeterlidir. Aslında, daha önce hiç Word Makro kodu yazmadığım için, Word'e gittim, eylemleri kaydettim, sonra bu kodu Excel'e kopyaladım ve her satırın önüne öneki ekledim.

Sub ControlWord() ' You must pick Microsoft Word 8.0 from Tools>References ' in the VB editor to execute Word commands. ' See VB Help topic "Controlling One Microsoft Office Application from Another" ' for more information. ' Originally published by www.MrExcel.com 2/28/1999 Dim appWD As Word.Application ' Create a new instance of Word & make it visible Set appWD = CreateObject("Word.Application.8") appWD.Visible = True Sheets("Data").Select 'Find the last row with data in the database FinalRow = Range("A9999").End(xlUp).Row For i = 2 To FinalRow Sheets("Data").Select ' Copy the name to cell C4 Range("A" & i).Copy Destination:=Sheets("Template").Range("C4") ' Copy data columns, transpose and paste in C10:C13 Range("B" & i & ":E" & i).Copy Sheets("Template").Select Range("C10").PasteSpecial Transpose:=True ' Copy the data for the new document to the clipboard Range("A1:F15").Copy ' Tell Word to create a new document appWD.Documents.Add ' Tell Word to paste the contents of the clipboard into the new document appWD.Selection.Paste ' Save the new document with a sequential file name appWD.ActiveDocument.SaveAs FileName:="File" & i ' Close this new word document appWD.ActiveDocument.Close Next i ' Close the Word application appWD.Quit End Sub

Bu makroyu çalıştırdıktan sonra, veri sayfanızdaki her veri satırı için bir yeni Word dosyanız olacaktır.

Bu harika soru için Jake'e tekrar teşekkürler. Word'ü Excel'in içinden kontrol etmenin güçlü bir çözüm sağlayabileceği birçok uygulama vardır.

Ilginç makaleler...