Excel To Word Macro - Petua Excel

Isi kandungan

Terima kasih kepada Jake yang memberikan soalan Excel minggu ini:

Bagaimana saya boleh menulis makro yang akan mengambil data spreadsheet Excel dan membuat fail Word untuk setiap baris data?

Jake - idea hebat! Saya sering mempunyai hasil penjualan untuk seluruh syarikat dan akan sangat senang dapat menghantar setiap wakil hanya maklumatnya di Word. Anda boleh melakukan ini dari Word menggunakan Mail Merge, tetapi mengawal Word dari Excel adalah prospek yang menarik. Contoh di bawah ini cukup mudah, tetapi seseorang dapat menggunakan konsep ini untuk melakukan aplikasi yang cukup maju.

Pertama, mari kita lihat contoh data set. Saya membuat buku kerja dengan dua helaian - satu dipanggil Data dan satu disebut Templat. Lembaran kerja Data mempunyai banyak baris data. Lembaran kerja Templat mempunyai struktur Dokumen Word yang ingin saya buat. Dalam kes ini, saya ingin menyalin nama dari lajur A pangkalan data ke sel C4 pada templat. Lajur B: E pangkalan data akan masuk dalam sel C10: C13.

Pertama, mari kita lihat contoh data set. Saya membuat buku kerja dengan dua helaian - satu dipanggil Data dan satu disebut Templat. Lembaran kerja Data mempunyai banyak baris data. Lembaran kerja Templat mempunyai struktur Dokumen Word yang ingin saya buat. Dalam kes ini, saya ingin menyalin nama dari lajur A pangkalan data ke sel C4 pada templat. Lajur B: E pangkalan data akan masuk dalam sel C10: C13.

Lembaran Data
Helaian Templat

Mulakan Editor VB dengan alt-F11. Oleh kerana kami ingin mengeluarkan perintah Word di sini, Pergi ke Alat> Rujukan. Tatal ke bawah untuk mencari "Microsoft Word 8" dan tandakan kotak di sebelahnya untuk memilih item ini.

Untuk mengawal Word dari Excel, anda perlu menentukan pemboleh ubah untuk mewakili aplikasi Word. Dalam contoh di bawah, saya menggunakan appWD. Untuk sebarang arahan dalam Makro Excel yang ingin anda gunakan untuk aplikasi Word, anda hanya awalan perintah dengan appWD. Sebenarnya, kerana saya tidak pernah menulis sebaris kod Word Macro sebelumnya, saya pergi ke Word, merakam tindakan, kemudian menyalin kod itu ke Excel, menambahkan awalan sebelum setiap baris.

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

Setelah menjalankan makro ini, anda akan mempunyai satu fail Word baru untuk setiap baris data pada lembaran data anda.

Terima kasih sekali lagi kepada Jake untuk soalan hebat ini. Terdapat banyak aplikasi di mana mengendalikan Word dari dalam Excel dapat memberikan penyelesaian yang kuat.

Artikel menarik...